import numpy as np
import scipy as sp
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
%matplotlib inline
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications import VGG16
from tensorflow.keras import layers
from tensorflow.keras import models
from tensorflow.keras import regularizers,optimizers
from keras.models import Sequential
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Dropout
from tensorflow.keras.layers import Dense
from tensorflow.keras.layers import Input
from tensorflow.keras.models import Model
from keras.layers import Conv2D, MaxPooling2D,Activation
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.preprocessing.image import img_to_array
from tensorflow.keras.preprocessing.image import load_img
from tensorflow.keras.preprocessing.image import array_to_img
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelBinarizer
import pickle # For saving models to disk and loading saved models
import os
import zipfile
import PIL
import PIL.Image
import pathlib
import cv2 as cv
# Initializing the random number generator
import random
random.seed(0)
# Ignoring the warnings
import warnings
warnings.filterwarnings("ignore")
path = 'C:/Users/uprak/capstone'
os.chdir(path)
ls
Volume in drive C is Windows
Volume Serial Number is D87D-3DAA
Directory of C:\Users\uprak\capstone
12-12-2021 09:12 <DIR> .
12-12-2021 09:12 <DIR> ..
07-12-2021 17:05 <DIR> .ipynb_checkpoints
07-12-2021 15:56 <DIR> Annotations
12-12-2021 09:12 4,263,595 capstone_cv2.ipynb
09-12-2021 19:30 <DIR> Car Images
07-12-2021 15:13 5,454 Car names and make.csv
07-12-2021 16:01 1,666,501 test.csv
07-12-2021 22:35 6,514,171 test1.csv
07-12-2021 16:01 1,696,197 train.csv
07-12-2021 22:17 7,129,237 train1.csv
6 File(s) 21,275,155 bytes
5 Dir(s) 98,481,082,368 bytes free
path1 = os.getcwd()
path1
'C:\\Users\\uprak\\capstone'
car_img_path = os.path.join(path1,'Car Images')
car_ann_path = os.path.join(path1,'Annotations')
ds_car_name = pd.read_csv("Car names and make.csv",names=['Car Name'])
ds_car_name
| Car Name | |
|---|---|
| 0 | AM General Hummer SUV 2000 |
| 1 | Acura RL Sedan 2012 |
| 2 | Acura TL Sedan 2012 |
| 3 | Acura TL Type-S 2008 |
| 4 | Acura TSX Sedan 2012 |
| ... | ... |
| 191 | Volkswagen Beetle Hatchback 2012 |
| 192 | Volvo C30 Hatchback 2012 |
| 193 | Volvo 240 Sedan 1993 |
| 194 | Volvo XC90 SUV 2007 |
| 195 | smart fortwo Convertible 2012 |
196 rows × 1 columns
count = 0
car_dict = {}
for car_name in ds_car_name['Car Name'].values:
car_dict[count+1] = car_name
count=count+1
car_dict
{1: 'AM General Hummer SUV 2000',
2: 'Acura RL Sedan 2012',
3: 'Acura TL Sedan 2012',
4: 'Acura TL Type-S 2008',
5: 'Acura TSX Sedan 2012',
6: 'Acura Integra Type R 2001',
7: 'Acura ZDX Hatchback 2012',
8: 'Aston Martin V8 Vantage Convertible 2012',
9: 'Aston Martin V8 Vantage Coupe 2012',
10: 'Aston Martin Virage Convertible 2012',
11: 'Aston Martin Virage Coupe 2012',
12: 'Audi RS 4 Convertible 2008',
13: 'Audi A5 Coupe 2012',
14: 'Audi TTS Coupe 2012',
15: 'Audi R8 Coupe 2012',
16: 'Audi V8 Sedan 1994',
17: 'Audi 100 Sedan 1994',
18: 'Audi 100 Wagon 1994',
19: 'Audi TT Hatchback 2011',
20: 'Audi S6 Sedan 2011',
21: 'Audi S5 Convertible 2012',
22: 'Audi S5 Coupe 2012',
23: 'Audi S4 Sedan 2012',
24: 'Audi S4 Sedan 2007',
25: 'Audi TT RS Coupe 2012',
26: 'BMW ActiveHybrid 5 Sedan 2012',
27: 'BMW 1 Series Convertible 2012',
28: 'BMW 1 Series Coupe 2012',
29: 'BMW 3 Series Sedan 2012',
30: 'BMW 3 Series Wagon 2012',
31: 'BMW 6 Series Convertible 2007',
32: 'BMW X5 SUV 2007',
33: 'BMW X6 SUV 2012',
34: 'BMW M3 Coupe 2012',
35: 'BMW M5 Sedan 2010',
36: 'BMW M6 Convertible 2010',
37: 'BMW X3 SUV 2012',
38: 'BMW Z4 Convertible 2012',
39: 'Bentley Continental Supersports Conv. Convertible 2012',
40: 'Bentley Arnage Sedan 2009',
41: 'Bentley Mulsanne Sedan 2011',
42: 'Bentley Continental GT Coupe 2012',
43: 'Bentley Continental GT Coupe 2007',
44: 'Bentley Continental Flying Spur Sedan 2007',
45: 'Bugatti Veyron 16.4 Convertible 2009',
46: 'Bugatti Veyron 16.4 Coupe 2009',
47: 'Buick Regal GS 2012',
48: 'Buick Rainier SUV 2007',
49: 'Buick Verano Sedan 2012',
50: 'Buick Enclave SUV 2012',
51: 'Cadillac CTS-V Sedan 2012',
52: 'Cadillac SRX SUV 2012',
53: 'Cadillac Escalade EXT Crew Cab 2007',
54: 'Chevrolet Silverado 1500 Hybrid Crew Cab 2012',
55: 'Chevrolet Corvette Convertible 2012',
56: 'Chevrolet Corvette ZR1 2012',
57: 'Chevrolet Corvette Ron Fellows Edition Z06 2007',
58: 'Chevrolet Traverse SUV 2012',
59: 'Chevrolet Camaro Convertible 2012',
60: 'Chevrolet HHR SS 2010',
61: 'Chevrolet Impala Sedan 2007',
62: 'Chevrolet Tahoe Hybrid SUV 2012',
63: 'Chevrolet Sonic Sedan 2012',
64: 'Chevrolet Express Cargo Van 2007',
65: 'Chevrolet Avalanche Crew Cab 2012',
66: 'Chevrolet Cobalt SS 2010',
67: 'Chevrolet Malibu Hybrid Sedan 2010',
68: 'Chevrolet TrailBlazer SS 2009',
69: 'Chevrolet Silverado 2500HD Regular Cab 2012',
70: 'Chevrolet Silverado 1500 Classic Extended Cab 2007',
71: 'Chevrolet Express Van 2007',
72: 'Chevrolet Monte Carlo Coupe 2007',
73: 'Chevrolet Malibu Sedan 2007',
74: 'Chevrolet Silverado 1500 Extended Cab 2012',
75: 'Chevrolet Silverado 1500 Regular Cab 2012',
76: 'Chrysler Aspen SUV 2009',
77: 'Chrysler Sebring Convertible 2010',
78: 'Chrysler Town and Country Minivan 2012',
79: 'Chrysler 300 SRT-8 2010',
80: 'Chrysler Crossfire Convertible 2008',
81: 'Chrysler PT Cruiser Convertible 2008',
82: 'Daewoo Nubira Wagon 2002',
83: 'Dodge Caliber Wagon 2012',
84: 'Dodge Caliber Wagon 2007',
85: 'Dodge Caravan Minivan 1997',
86: 'Dodge Ram Pickup 3500 Crew Cab 2010',
87: 'Dodge Ram Pickup 3500 Quad Cab 2009',
88: 'Dodge Sprinter Cargo Van 2009',
89: 'Dodge Journey SUV 2012',
90: 'Dodge Dakota Crew Cab 2010',
91: 'Dodge Dakota Club Cab 2007',
92: 'Dodge Magnum Wagon 2008',
93: 'Dodge Challenger SRT8 2011',
94: 'Dodge Durango SUV 2012',
95: 'Dodge Durango SUV 2007',
96: 'Dodge Charger Sedan 2012',
97: 'Dodge Charger SRT-8 2009',
98: 'Eagle Talon Hatchback 1998',
99: 'FIAT 500 Abarth 2012',
100: 'FIAT 500 Convertible 2012',
101: 'Ferrari FF Coupe 2012',
102: 'Ferrari California Convertible 2012',
103: 'Ferrari 458 Italia Convertible 2012',
104: 'Ferrari 458 Italia Coupe 2012',
105: 'Fisker Karma Sedan 2012',
106: 'Ford F-450 Super Duty Crew Cab 2012',
107: 'Ford Mustang Convertible 2007',
108: 'Ford Freestar Minivan 2007',
109: 'Ford Expedition EL SUV 2009',
110: 'Ford Edge SUV 2012',
111: 'Ford Ranger SuperCab 2011',
112: 'Ford GT Coupe 2006',
113: 'Ford F-150 Regular Cab 2012',
114: 'Ford F-150 Regular Cab 2007',
115: 'Ford Focus Sedan 2007',
116: 'Ford E-Series Wagon Van 2012',
117: 'Ford Fiesta Sedan 2012',
118: 'GMC Terrain SUV 2012',
119: 'GMC Savana Van 2012',
120: 'GMC Yukon Hybrid SUV 2012',
121: 'GMC Acadia SUV 2012',
122: 'GMC Canyon Extended Cab 2012',
123: 'Geo Metro Convertible 1993',
124: 'HUMMER H3T Crew Cab 2010',
125: 'HUMMER H2 SUT Crew Cab 2009',
126: 'Honda Odyssey Minivan 2012',
127: 'Honda Odyssey Minivan 2007',
128: 'Honda Accord Coupe 2012',
129: 'Honda Accord Sedan 2012',
130: 'Hyundai Veloster Hatchback 2012',
131: 'Hyundai Santa Fe SUV 2012',
132: 'Hyundai Tucson SUV 2012',
133: 'Hyundai Veracruz SUV 2012',
134: 'Hyundai Sonata Hybrid Sedan 2012',
135: 'Hyundai Elantra Sedan 2007',
136: 'Hyundai Accent Sedan 2012',
137: 'Hyundai Genesis Sedan 2012',
138: 'Hyundai Sonata Sedan 2012',
139: 'Hyundai Elantra Touring Hatchback 2012',
140: 'Hyundai Azera Sedan 2012',
141: 'Infiniti G Coupe IPL 2012',
142: 'Infiniti QX56 SUV 2011',
143: 'Isuzu Ascender SUV 2008',
144: 'Jaguar XK XKR 2012',
145: 'Jeep Patriot SUV 2012',
146: 'Jeep Wrangler SUV 2012',
147: 'Jeep Liberty SUV 2012',
148: 'Jeep Grand Cherokee SUV 2012',
149: 'Jeep Compass SUV 2012',
150: 'Lamborghini Reventon Coupe 2008',
151: 'Lamborghini Aventador Coupe 2012',
152: 'Lamborghini Gallardo LP 570-4 Superleggera 2012',
153: 'Lamborghini Diablo Coupe 2001',
154: 'Land Rover Range Rover SUV 2012',
155: 'Land Rover LR2 SUV 2012',
156: 'Lincoln Town Car Sedan 2011',
157: 'MINI Cooper Roadster Convertible 2012',
158: 'Maybach Landaulet Convertible 2012',
159: 'Mazda Tribute SUV 2011',
160: 'McLaren MP4-12C Coupe 2012',
161: 'Mercedes-Benz 300-Class Convertible 1993',
162: 'Mercedes-Benz C-Class Sedan 2012',
163: 'Mercedes-Benz SL-Class Coupe 2009',
164: 'Mercedes-Benz E-Class Sedan 2012',
165: 'Mercedes-Benz S-Class Sedan 2012',
166: 'Mercedes-Benz Sprinter Van 2012',
167: 'Mitsubishi Lancer Sedan 2012',
168: 'Nissan Leaf Hatchback 2012',
169: 'Nissan NV Passenger Van 2012',
170: 'Nissan Juke Hatchback 2012',
171: 'Nissan 240SX Coupe 1998',
172: 'Plymouth Neon Coupe 1999',
173: 'Porsche Panamera Sedan 2012',
174: 'Ram C/V Cargo Van Minivan 2012',
175: 'Rolls-Royce Phantom Drophead Coupe Convertible 2012',
176: 'Rolls-Royce Ghost Sedan 2012',
177: 'Rolls-Royce Phantom Sedan 2012',
178: 'Scion xD Hatchback 2012',
179: 'Spyker C8 Convertible 2009',
180: 'Spyker C8 Coupe 2009',
181: 'Suzuki Aerio Sedan 2007',
182: 'Suzuki Kizashi Sedan 2012',
183: 'Suzuki SX4 Hatchback 2012',
184: 'Suzuki SX4 Sedan 2012',
185: 'Tesla Model S Sedan 2012',
186: 'Toyota Sequoia SUV 2012',
187: 'Toyota Camry Sedan 2012',
188: 'Toyota Corolla Sedan 2012',
189: 'Toyota 4Runner SUV 2012',
190: 'Volkswagen Golf Hatchback 2012',
191: 'Volkswagen Golf Hatchback 1991',
192: 'Volkswagen Beetle Hatchback 2012',
193: 'Volvo C30 Hatchback 2012',
194: 'Volvo 240 Sedan 1993',
195: 'Volvo XC90 SUV 2007',
196: 'smart fortwo Convertible 2012'}
train_img_dir = os.path.join(car_img_path,'Train Images')
test_img_dir = os.path.join(car_img_path,'Test Images')
ds_train_ann = pd.read_csv(os.path.join(car_ann_path,'Train Annotations.csv'),names=['Image_Name','Start_x','Start_y','End_x','End_y','Image_class'])
ds_test_ann = pd.read_csv(os.path.join(car_ann_path,'Test Annotation.csv'),names=['Image_Name','Start_x','Start_y','End_x','End_y','Image_class'])
ds_train_ann.drop([ds_train_ann.index[0]],inplace=True)
ds_test_ann.drop([ds_test_ann.index[0]],inplace=True)
ds_train_ann.reset_index(inplace=True,drop=True)
ds_test_ann.reset_index(inplace=True,drop=True)
ds_train_ann.head(5)
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | |
|---|---|---|---|---|---|---|
| 0 | 00001.jpg | 39 | 116.0 | 569.0 | 375.0 | 14 |
| 1 | 00002.jpg | 36 | 116.0 | 868.0 | 587.0 | 3 |
| 2 | 00003.jpg | 85 | 109.0 | 601.0 | 381.0 | 91 |
| 3 | 00004.jpg | 621 | 393.0 | 1484.0 | 1096.0 | 134 |
| 4 | 00005.jpg | 14 | 36.0 | 133.0 | 99.0 | 106 |
sns.histplot(ds_train_ann['Image_class'].value_counts())
<AxesSubplot:xlabel='Image_class', ylabel='Count'>
sns.histplot(ds_test_ann['Image_class'].value_counts())
<AxesSubplot:xlabel='Image_class', ylabel='Count'>
def load_images_from_folder(folder):
#file_name = []
file_path = {}
count = 0
for folders in os.listdir(folder):
#print(folders)
if folders == '.DS_Store':
pass
else:
foldername = os.path.join(folder,folders)
#print(foldername)
for filename in os.listdir(foldername):
count = count+1
filepath = os.path.join(foldername,filename)
#file_name.append(filename)
file_path[filename]=filepath
#print(filename)
return file_path
train_images_path = load_images_from_folder(train_img_dir)
test_images_path = load_images_from_folder(test_img_dir)
ds_train_ann['Image_Path'] = ds_train_ann['Image_Name'].apply(lambda x:train_images_path[x])
ds_train_ann['Car_Name'] = ds_train_ann['Image_class'].apply(lambda x:car_dict[int(x)])
ds_train_ann['Start_x'] = ds_train_ann.Start_x.astype(float)
ds_train_ann['Image_class'] = ds_train_ann.Image_class.astype(int)
ds_train_ann['Bbox'] = ds_train_ann.apply(lambda x:list([x['Start_x'],x['Start_y'],x['End_x'],x['End_y']]),axis=1)
ds_test_ann['Image_Path'] = ds_test_ann['Image_Name'].apply(lambda x:test_images_path[x])
ds_test_ann['Start_x'] = ds_test_ann.Start_x.astype(float)
ds_test_ann['Image_class'] = ds_test_ann.Image_class.astype(int)
ds_test_ann['Car_Name'] = ds_test_ann['Image_class'].apply(lambda x:car_dict[int(x)])
ds_test_ann['Bbox'] = ds_test_ann.apply(lambda x:list([x['Start_x'],x['Start_y'],x['End_x'],x['End_y']]),axis=1)
ds_train_ann
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 00001.jpg | 39.0 | 116.0 | 569.0 | 375.0 | 14 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi TTS Coupe 2012 | [39.0, 116.0, 569.0, 375.0] |
| 1 | 00002.jpg | 36.0 | 116.0 | 868.0 | 587.0 | 3 | C:\Users\uprak\capstone\Car Images\Train Image... | Acura TL Sedan 2012 | [36.0, 116.0, 868.0, 587.0] |
| 2 | 00003.jpg | 85.0 | 109.0 | 601.0 | 381.0 | 91 | C:\Users\uprak\capstone\Car Images\Train Image... | Dodge Dakota Club Cab 2007 | [85.0, 109.0, 601.0, 381.0] |
| 3 | 00004.jpg | 621.0 | 393.0 | 1484.0 | 1096.0 | 134 | C:\Users\uprak\capstone\Car Images\Train Image... | Hyundai Sonata Hybrid Sedan 2012 | [621.0, 393.0, 1484.0, 1096.0] |
| 4 | 00005.jpg | 14.0 | 36.0 | 133.0 | 99.0 | 106 | C:\Users\uprak\capstone\Car Images\Train Image... | Ford F-450 Super Duty Crew Cab 2012 | [14.0, 36.0, 133.0, 99.0] |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 8139 | 08140.jpg | 3.0 | 44.0 | 423.0 | 336.0 | 78 | C:\Users\uprak\capstone\Car Images\Train Image... | Chrysler Town and Country Minivan 2012 | [3.0, 44.0, 423.0, 336.0] |
| 8140 | 08141.jpg | 138.0 | 150.0 | 706.0 | 523.0 | 196 | C:\Users\uprak\capstone\Car Images\Train Image... | smart fortwo Convertible 2012 | [138.0, 150.0, 706.0, 523.0] |
| 8141 | 08142.jpg | 26.0 | 246.0 | 660.0 | 449.0 | 163 | C:\Users\uprak\capstone\Car Images\Train Image... | Mercedes-Benz SL-Class Coupe 2009 | [26.0, 246.0, 660.0, 449.0] |
| 8142 | 08143.jpg | 78.0 | 526.0 | 1489.0 | 908.0 | 112 | C:\Users\uprak\capstone\Car Images\Train Image... | Ford GT Coupe 2006 | [78.0, 526.0, 1489.0, 908.0] |
| 8143 | 08144.jpg | 20.0 | 240.0 | 862.0 | 677.0 | 17 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi 100 Sedan 1994 | [20.0, 240.0, 862.0, 677.0] |
8144 rows × 9 columns
df_bb = ds_train_ann[['Image_Name','Start_x','Start_y','End_x','End_y','Car_Name','Image_class','Image_Path']]
pd.plotting.scatter_matrix(df_bb, alpha=0.5)
array([[<AxesSubplot:xlabel='Start_x', ylabel='Start_x'>,
<AxesSubplot:xlabel='Start_y', ylabel='Start_x'>,
<AxesSubplot:xlabel='End_x', ylabel='Start_x'>,
<AxesSubplot:xlabel='End_y', ylabel='Start_x'>,
<AxesSubplot:xlabel='Image_class', ylabel='Start_x'>],
[<AxesSubplot:xlabel='Start_x', ylabel='Start_y'>,
<AxesSubplot:xlabel='Start_y', ylabel='Start_y'>,
<AxesSubplot:xlabel='End_x', ylabel='Start_y'>,
<AxesSubplot:xlabel='End_y', ylabel='Start_y'>,
<AxesSubplot:xlabel='Image_class', ylabel='Start_y'>],
[<AxesSubplot:xlabel='Start_x', ylabel='End_x'>,
<AxesSubplot:xlabel='Start_y', ylabel='End_x'>,
<AxesSubplot:xlabel='End_x', ylabel='End_x'>,
<AxesSubplot:xlabel='End_y', ylabel='End_x'>,
<AxesSubplot:xlabel='Image_class', ylabel='End_x'>],
[<AxesSubplot:xlabel='Start_x', ylabel='End_y'>,
<AxesSubplot:xlabel='Start_y', ylabel='End_y'>,
<AxesSubplot:xlabel='End_x', ylabel='End_y'>,
<AxesSubplot:xlabel='End_y', ylabel='End_y'>,
<AxesSubplot:xlabel='Image_class', ylabel='End_y'>],
[<AxesSubplot:xlabel='Start_x', ylabel='Image_class'>,
<AxesSubplot:xlabel='Start_y', ylabel='Image_class'>,
<AxesSubplot:xlabel='End_x', ylabel='Image_class'>,
<AxesSubplot:xlabel='End_y', ylabel='Image_class'>,
<AxesSubplot:xlabel='Image_class', ylabel='Image_class'>]],
dtype=object)
sns.relplot(x='Start_x',y='End_x',data=df_bb)
<seaborn.axisgrid.FacetGrid at 0x206c0f62d30>
sns.relplot(x='Start_y',y='End_y',data=df_bb)
<seaborn.axisgrid.FacetGrid at 0x206c0f41cd0>
sns.relplot(x='Start_x',y='Start_y',data=df_bb)
<seaborn.axisgrid.FacetGrid at 0x206c0f03820>
sns.relplot(x='End_x',y='End_y',data=df_bb)
<seaborn.axisgrid.FacetGrid at 0x2070aae9b80>
df_bb['width'] = (df_bb['End_x'] - df_bb['Start_x'])
df_bb['height'] = (df_bb['End_y'] - df_bb['Start_y'])
df_bb['area'] = df_bb['height'] * df_bb['width']
df_bb.head(5)
| Image_Name | Start_x | Start_y | End_x | End_y | Car_Name | Image_class | Image_Path | width | height | area | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 00001.jpg | 39.0 | 116.0 | 569.0 | 375.0 | Audi TTS Coupe 2012 | 14 | C:\Users\uprak\capstone\Car Images\Train Image... | 530.0 | 259.0 | 137270.0 |
| 1 | 00002.jpg | 36.0 | 116.0 | 868.0 | 587.0 | Acura TL Sedan 2012 | 3 | C:\Users\uprak\capstone\Car Images\Train Image... | 832.0 | 471.0 | 391872.0 |
| 2 | 00003.jpg | 85.0 | 109.0 | 601.0 | 381.0 | Dodge Dakota Club Cab 2007 | 91 | C:\Users\uprak\capstone\Car Images\Train Image... | 516.0 | 272.0 | 140352.0 |
| 3 | 00004.jpg | 621.0 | 393.0 | 1484.0 | 1096.0 | Hyundai Sonata Hybrid Sedan 2012 | 134 | C:\Users\uprak\capstone\Car Images\Train Image... | 863.0 | 703.0 | 606689.0 |
| 4 | 00005.jpg | 14.0 | 36.0 | 133.0 | 99.0 | Ford F-450 Super Duty Crew Cab 2012 | 106 | C:\Users\uprak\capstone\Car Images\Train Image... | 119.0 | 63.0 | 7497.0 |
sns.relplot(x='width',y='height',hue='area',palette="ch:r=-.5,l=.75",data=df_bb)
<seaborn.axisgrid.FacetGrid at 0x2070a44ce20>
df_bb[df_bb['area']<=5000.0]
| Image_Name | Start_x | Start_y | End_x | End_y | Car_Name | Image_class | Image_Path | width | height | area | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 96 | 00097.jpg | 3.0 | 7.0 | 76.0 | 50.0 | Chevrolet Corvette Ron Fellows Edition Z06 2007 | 57 | C:\Users\uprak\capstone\Car Images\Train Image... | 73.0 | 43.0 | 3139.0 |
| 215 | 00216.jpg | 21.0 | 45.0 | 133.0 | 88.0 | GMC Savana Van 2012 | 119 | C:\Users\uprak\capstone\Car Images\Train Image... | 112.0 | 43.0 | 4816.0 |
| 461 | 00462.jpg | 5.0 | 8.0 | 83.0 | 58.0 | AM General Hummer SUV 2000 | 1 | C:\Users\uprak\capstone\Car Images\Train Image... | 78.0 | 50.0 | 3900.0 |
| 1039 | 01040.jpg | 28.0 | 21.0 | 105.0 | 79.0 | Dodge Sprinter Cargo Van 2009 | 88 | C:\Users\uprak\capstone\Car Images\Train Image... | 77.0 | 58.0 | 4466.0 |
| 1786 | 01787.jpg | 11.0 | 26.0 | 98.0 | 68.0 | Geo Metro Convertible 1993 | 123 | C:\Users\uprak\capstone\Car Images\Train Image... | 87.0 | 42.0 | 3654.0 |
| 2046 | 02047.jpg | 43.0 | 50.0 | 136.0 | 90.0 | Chevrolet Corvette Ron Fellows Edition Z06 2007 | 57 | C:\Users\uprak\capstone\Car Images\Train Image... | 93.0 | 40.0 | 3720.0 |
| 2291 | 02292.jpg | 2.0 | 15.0 | 83.0 | 61.0 | Audi 100 Wagon 1994 | 18 | C:\Users\uprak\capstone\Car Images\Train Image... | 81.0 | 46.0 | 3726.0 |
| 2427 | 02428.jpg | 5.0 | 5.0 | 92.0 | 62.0 | Geo Metro Convertible 1993 | 123 | C:\Users\uprak\capstone\Car Images\Train Image... | 87.0 | 57.0 | 4959.0 |
| 3434 | 03435.jpg | 4.0 | 15.0 | 87.0 | 54.0 | Audi 100 Wagon 1994 | 18 | C:\Users\uprak\capstone\Car Images\Train Image... | 83.0 | 39.0 | 3237.0 |
| 4046 | 04047.jpg | 12.0 | 19.0 | 100.0 | 54.0 | Geo Metro Convertible 1993 | 123 | C:\Users\uprak\capstone\Car Images\Train Image... | 88.0 | 35.0 | 3080.0 |
| 4589 | 04590.jpg | 83.0 | 67.0 | 181.0 | 114.0 | Chevrolet Tahoe Hybrid SUV 2012 | 62 | C:\Users\uprak\capstone\Car Images\Train Image... | 98.0 | 47.0 | 4606.0 |
| 4666 | 04667.jpg | 3.0 | 9.0 | 91.0 | 59.0 | Geo Metro Convertible 1993 | 123 | C:\Users\uprak\capstone\Car Images\Train Image... | 88.0 | 50.0 | 4400.0 |
| 5223 | 05224.jpg | 5.0 | 14.0 | 93.0 | 58.0 | AM General Hummer SUV 2000 | 1 | C:\Users\uprak\capstone\Car Images\Train Image... | 88.0 | 44.0 | 3872.0 |
| 5656 | 05657.jpg | 5.0 | 8.0 | 91.0 | 59.0 | AM General Hummer SUV 2000 | 1 | C:\Users\uprak\capstone\Car Images\Train Image... | 86.0 | 51.0 | 4386.0 |
| 5803 | 05804.jpg | 4.0 | 15.0 | 94.0 | 63.0 | AM General Hummer SUV 2000 | 1 | C:\Users\uprak\capstone\Car Images\Train Image... | 90.0 | 48.0 | 4320.0 |
| 6283 | 06284.jpg | 7.0 | 41.0 | 83.0 | 64.0 | Chevrolet Corvette Ron Fellows Edition Z06 2007 | 57 | C:\Users\uprak\capstone\Car Images\Train Image... | 76.0 | 23.0 | 1748.0 |
| 6361 | 06362.jpg | 2.0 | 19.0 | 104.0 | 60.0 | Audi 100 Wagon 1994 | 18 | C:\Users\uprak\capstone\Car Images\Train Image... | 102.0 | 41.0 | 4182.0 |
| 6483 | 06484.jpg | 1.0 | 11.0 | 92.0 | 47.0 | Geo Metro Convertible 1993 | 123 | C:\Users\uprak\capstone\Car Images\Train Image... | 91.0 | 36.0 | 3276.0 |
| 7346 | 07347.jpg | 6.0 | 12.0 | 86.0 | 49.0 | Geo Metro Convertible 1993 | 123 | C:\Users\uprak\capstone\Car Images\Train Image... | 80.0 | 37.0 | 2960.0 |
| 7468 | 07469.jpg | 3.0 | 13.0 | 76.0 | 52.0 | Chevrolet Corvette Ron Fellows Edition Z06 2007 | 57 | C:\Users\uprak\capstone\Car Images\Train Image... | 73.0 | 39.0 | 2847.0 |
| 8086 | 08087.jpg | 5.0 | 14.0 | 84.0 | 55.0 | Geo Metro Convertible 1993 | 123 | C:\Users\uprak\capstone\Car Images\Train Image... | 79.0 | 41.0 | 3239.0 |
sns.distplot(df_bb['area'])
<AxesSubplot:xlabel='area', ylabel='Density'>
df_bb[df_bb['area']>=4000000]
| Image_Name | Start_x | Start_y | End_x | End_y | Car_Name | Image_class | Image_Path | width | height | area | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 76 | 00077.jpg | 25.0 | 25.0 | 3502.0 | 2017.0 | Ford Edge SUV 2012 | 110 | C:\Users\uprak\capstone\Car Images\Train Image... | 3477.0 | 1992.0 | 6926184.0 |
| 229 | 00230.jpg | 223.0 | 542.0 | 3692.0 | 2478.0 | Suzuki SX4 Hatchback 2012 | 183 | C:\Users\uprak\capstone\Car Images\Train Image... | 3469.0 | 1936.0 | 6715984.0 |
| 258 | 00259.jpg | 75.0 | 254.0 | 2514.0 | 1929.0 | Toyota Camry Sedan 2012 | 187 | C:\Users\uprak\capstone\Car Images\Train Image... | 2439.0 | 1675.0 | 4085325.0 |
| 345 | 00346.jpg | 112.0 | 21.0 | 2859.0 | 1928.0 | Chevrolet Sonic Sedan 2012 | 63 | C:\Users\uprak\capstone\Car Images\Train Image... | 2747.0 | 1907.0 | 5238529.0 |
| 1032 | 01033.jpg | 49.0 | 279.0 | 2791.0 | 1870.0 | Chevrolet Impala Sedan 2007 | 61 | C:\Users\uprak\capstone\Car Images\Train Image... | 2742.0 | 1591.0 | 4362522.0 |
| 1062 | 01063.jpg | 351.0 | 286.0 | 3753.0 | 2243.0 | Chrysler Town and Country Minivan 2012 | 78 | C:\Users\uprak\capstone\Car Images\Train Image... | 3402.0 | 1957.0 | 6657714.0 |
| 1426 | 01427.jpg | 347.0 | 476.0 | 4243.0 | 2904.0 | Jeep Compass SUV 2012 | 149 | C:\Users\uprak\capstone\Car Images\Train Image... | 3896.0 | 2428.0 | 9459488.0 |
| 2068 | 02069.jpg | 1.0 | 550.0 | 2320.0 | 2506.0 | Nissan Leaf Hatchback 2012 | 168 | C:\Users\uprak\capstone\Car Images\Train Image... | 2319.0 | 1956.0 | 4535964.0 |
| 2078 | 02079.jpg | 45.0 | 181.0 | 2582.0 | 1848.0 | Chevrolet Silverado 1500 Regular Cab 2012 | 75 | C:\Users\uprak\capstone\Car Images\Train Image... | 2537.0 | 1667.0 | 4229179.0 |
| 2086 | 02087.jpg | 19.0 | 533.0 | 3220.0 | 1953.0 | BMW 3 Series Wagon 2012 | 30 | C:\Users\uprak\capstone\Car Images\Train Image... | 3201.0 | 1420.0 | 4545420.0 |
| 2142 | 02143.jpg | 8.0 | 76.0 | 3640.0 | 2675.0 | Plymouth Neon Coupe 1999 | 172 | C:\Users\uprak\capstone\Car Images\Train Image... | 3632.0 | 2599.0 | 9439568.0 |
| 2363 | 02364.jpg | 373.0 | 56.0 | 2663.0 | 1915.0 | Acura TL Sedan 2012 | 3 | C:\Users\uprak\capstone\Car Images\Train Image... | 2290.0 | 1859.0 | 4257110.0 |
| 2995 | 02996.jpg | 174.0 | 271.0 | 3826.0 | 2919.0 | Jeep Compass SUV 2012 | 149 | C:\Users\uprak\capstone\Car Images\Train Image... | 3652.0 | 2648.0 | 9670496.0 |
| 3184 | 03185.jpg | 673.0 | 981.0 | 4278.0 | 2553.0 | Chevrolet Corvette ZR1 2012 | 56 | C:\Users\uprak\capstone\Car Images\Train Image... | 3605.0 | 1572.0 | 5667060.0 |
| 3229 | 03230.jpg | 36.0 | 122.0 | 3433.0 | 1518.0 | Mitsubishi Lancer Sedan 2012 | 167 | C:\Users\uprak\capstone\Car Images\Train Image... | 3397.0 | 1396.0 | 4742212.0 |
| 3488 | 03489.jpg | 1.0 | 329.0 | 3054.0 | 2242.0 | Jeep Compass SUV 2012 | 149 | C:\Users\uprak\capstone\Car Images\Train Image... | 3053.0 | 1913.0 | 5840389.0 |
| 4103 | 04104.jpg | 48.0 | 74.0 | 2608.0 | 1640.0 | Chevrolet Silverado 1500 Classic Extended Cab ... | 70 | C:\Users\uprak\capstone\Car Images\Train Image... | 2560.0 | 1566.0 | 4008960.0 |
| 4136 | 04137.jpg | 199.0 | 482.0 | 3385.0 | 2465.0 | Chevrolet Traverse SUV 2012 | 58 | C:\Users\uprak\capstone\Car Images\Train Image... | 3186.0 | 1983.0 | 6317838.0 |
| 4302 | 04303.jpg | 192.0 | 581.0 | 3976.0 | 1791.0 | Mercedes-Benz E-Class Sedan 2012 | 164 | C:\Users\uprak\capstone\Car Images\Train Image... | 3784.0 | 1210.0 | 4578640.0 |
| 4397 | 04398.jpg | 721.0 | 172.0 | 3678.0 | 1982.0 | Rolls-Royce Ghost Sedan 2012 | 176 | C:\Users\uprak\capstone\Car Images\Train Image... | 2957.0 | 1810.0 | 5352170.0 |
| 5224 | 05225.jpg | 108.0 | 103.0 | 2743.0 | 1758.0 | Scion xD Hatchback 2012 | 178 | C:\Users\uprak\capstone\Car Images\Train Image... | 2635.0 | 1655.0 | 4360925.0 |
| 5436 | 05437.jpg | 96.0 | 416.0 | 4252.0 | 2792.0 | Chevrolet Impala Sedan 2007 | 61 | C:\Users\uprak\capstone\Car Images\Train Image... | 4156.0 | 2376.0 | 9874656.0 |
| 5536 | 05537.jpg | 667.0 | 274.0 | 3686.0 | 2221.0 | Rolls-Royce Ghost Sedan 2012 | 176 | C:\Users\uprak\capstone\Car Images\Train Image... | 3019.0 | 1947.0 | 5877993.0 |
| 5554 | 05555.jpg | 144.0 | 643.0 | 3656.0 | 2288.0 | Chevrolet Corvette Ron Fellows Edition Z06 2007 | 57 | C:\Users\uprak\capstone\Car Images\Train Image... | 3512.0 | 1645.0 | 5777240.0 |
| 5944 | 05945.jpg | 1648.0 | 1508.0 | 5205.0 | 3389.0 | Chevrolet Sonic Sedan 2012 | 63 | C:\Users\uprak\capstone\Car Images\Train Image... | 3557.0 | 1881.0 | 6690717.0 |
| 6130 | 06131.jpg | 271.0 | 440.0 | 3392.0 | 1955.0 | Ford Edge SUV 2012 | 110 | C:\Users\uprak\capstone\Car Images\Train Image... | 3121.0 | 1515.0 | 4728315.0 |
| 6451 | 06452.jpg | 645.0 | 281.0 | 3464.0 | 2572.0 | Jeep Patriot SUV 2012 | 145 | C:\Users\uprak\capstone\Car Images\Train Image... | 2819.0 | 2291.0 | 6458329.0 |
| 7192 | 07193.jpg | 542.0 | 749.0 | 3860.0 | 2657.0 | BMW M6 Convertible 2010 | 36 | C:\Users\uprak\capstone\Car Images\Train Image... | 3318.0 | 1908.0 | 6330744.0 |
| 7329 | 07330.jpg | 143.0 | 541.0 | 3812.0 | 2094.0 | Hyundai Azera Sedan 2012 | 140 | C:\Users\uprak\capstone\Car Images\Train Image... | 3669.0 | 1553.0 | 5697957.0 |
| 7385 | 07386.jpg | 178.0 | 790.0 | 3061.0 | 2333.0 | Aston Martin Virage Convertible 2012 | 10 | C:\Users\uprak\capstone\Car Images\Train Image... | 2883.0 | 1543.0 | 4448469.0 |
| 7539 | 07540.jpg | 417.0 | 497.0 | 2981.0 | 2088.0 | Volkswagen Golf Hatchback 1991 | 191 | C:\Users\uprak\capstone\Car Images\Train Image... | 2564.0 | 1591.0 | 4079324.0 |
df_visualize = df_bb[df_bb['area']>=4000000]
df_visualize['Bbox'] = df_visualize.apply(lambda x:list([x['Start_x'],x['Start_y'],x['End_x'],x['End_y']]),axis=1)
image_paths = list(df_visualize['Image_Path'])
images = [read_image(p) for p in image_paths]
#images = np.array(df_visualize['Images'])
image_name = list(df_visualize['Car_Name'])
bbox_list = list(df_visualize['Bbox'])
image = visualize(images,bbox_list,image_name)
fig = plt.figure(figsize=(20, 20))
columns = 4
rows = 8
pics = []
for i in range(columns*rows-1):
pics.append(fig.add_subplot(rows, columns, i+1,title=image_name[i]))
plt.imshow(image[i])
plt.show()
df_visualize = df_bb[df_bb['area']<=5000.0]
df_visualize['Bbox'] = df_visualize.apply(lambda x:list([x['Start_x'],x['Start_y'],x['End_x'],x['End_y']]),axis=1)
image_paths = list(df_visualize['Image_Path'])
images = [read_image(p) for p in image_paths]
#images = np.array(df_visualize['Images'])
image_name = list(df_visualize['Car_Name'])
bbox_list = list(df_visualize['Bbox'])
image = visualize(images,bbox_list,image_name)
fig = plt.figure(figsize=(20, 20))
columns = 4
rows = 6
pics = []
for i in range(columns*rows-3):
pics.append(fig.add_subplot(rows, columns, i+1,title=image_name[i]))
plt.imshow(image[i])
plt.show()
def get_image_dims(df,col):
height = []
width = []
for img_path in df[col].values:
img = cv.imread(img_path)
height.append(int(img.shape[0]))
width.append(int(img.shape[1]))
return height,width
#ds_train_ann['Orig_img_height'],ds_train_ann['Orig_img_width'] = get_image_dims(ds_train_ann,'Image_Path')
#ds_test_ann['Orig_img_height'],ds_test_ann['Orig_img_width'] = get_image_dims(ds_test_ann,'Image_Path')
ds_train_ann
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 00001.jpg | 39.0 | 116.0 | 569.0 | 375.0 | 14 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi TTS Coupe 2012 | [39.0, 116.0, 569.0, 375.0] |
| 1 | 00002.jpg | 36.0 | 116.0 | 868.0 | 587.0 | 3 | C:\Users\uprak\capstone\Car Images\Train Image... | Acura TL Sedan 2012 | [36.0, 116.0, 868.0, 587.0] |
| 2 | 00003.jpg | 85.0 | 109.0 | 601.0 | 381.0 | 91 | C:\Users\uprak\capstone\Car Images\Train Image... | Dodge Dakota Club Cab 2007 | [85.0, 109.0, 601.0, 381.0] |
| 3 | 00004.jpg | 621.0 | 393.0 | 1484.0 | 1096.0 | 134 | C:\Users\uprak\capstone\Car Images\Train Image... | Hyundai Sonata Hybrid Sedan 2012 | [621.0, 393.0, 1484.0, 1096.0] |
| 4 | 00005.jpg | 14.0 | 36.0 | 133.0 | 99.0 | 106 | C:\Users\uprak\capstone\Car Images\Train Image... | Ford F-450 Super Duty Crew Cab 2012 | [14.0, 36.0, 133.0, 99.0] |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 8139 | 08140.jpg | 3.0 | 44.0 | 423.0 | 336.0 | 78 | C:\Users\uprak\capstone\Car Images\Train Image... | Chrysler Town and Country Minivan 2012 | [3.0, 44.0, 423.0, 336.0] |
| 8140 | 08141.jpg | 138.0 | 150.0 | 706.0 | 523.0 | 196 | C:\Users\uprak\capstone\Car Images\Train Image... | smart fortwo Convertible 2012 | [138.0, 150.0, 706.0, 523.0] |
| 8141 | 08142.jpg | 26.0 | 246.0 | 660.0 | 449.0 | 163 | C:\Users\uprak\capstone\Car Images\Train Image... | Mercedes-Benz SL-Class Coupe 2009 | [26.0, 246.0, 660.0, 449.0] |
| 8142 | 08143.jpg | 78.0 | 526.0 | 1489.0 | 908.0 | 112 | C:\Users\uprak\capstone\Car Images\Train Image... | Ford GT Coupe 2006 | [78.0, 526.0, 1489.0, 908.0] |
| 8143 | 08144.jpg | 20.0 | 240.0 | 862.0 | 677.0 | 17 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi 100 Sedan 1994 | [20.0, 240.0, 862.0, 677.0] |
8144 rows × 9 columns
#ds_train_ann.to_csv("train1.csv", index=False)
#ds_test_ann.to_csv("test1.csv",index=False)
df_train = pd.read_csv("train1.csv")
df_test = pd.read_csv("test1.csv")
df_train.sample(10)
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | Orig_img_height | Orig_img_width | Img_AR | bb_width | bb_height | bb_AR | img_area | bb_area | Images | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4815 | 04816.jpg | 79.0 | 84.0 | 528.0 | 327.0 | 3 | C:\Users\uprak\capstone\Car Images\Train Image... | Acura TL Sedan 2012 | [79.0, 84.0, 528.0, 327.0] | 404 | 606 | 1.500000 | 449.0 | 243.0 | 1.847737 | 244824 | 109107.0 | [[[193 171 111]\n [200 176 114]\n [198 173 1... |
| 3264 | 03265.jpg | 33.0 | 150.0 | 619.0 | 409.0 | 6 | C:\Users\uprak\capstone\Car Images\Train Image... | Acura Integra Type R 2001 | [33.0, 150.0, 619.0, 409.0] | 480 | 640 | 1.333333 | 586.0 | 259.0 | 2.262548 | 307200 | 151774.0 | [[[ 51 11 12]\n [ 53 13 14]\n [ 56 16 ... |
| 4342 | 04343.jpg | 143.0 | 310.0 | 915.0 | 656.0 | 112 | C:\Users\uprak\capstone\Car Images\Train Image... | Ford GT Coupe 2006 | [143.0, 310.0, 915.0, 656.0] | 768 | 1024 | 1.333333 | 772.0 | 346.0 | 2.231214 | 786432 | 267112.0 | [[[156 175 233]\n [154 173 231]\n [152 171 2... |
| 6332 | 06333.jpg | 80.0 | 81.0 | 575.0 | 393.0 | 85 | C:\Users\uprak\capstone\Car Images\Train Image... | Dodge Caravan Minivan 1997 | [80.0, 81.0, 575.0, 393.0] | 480 | 640 | 1.333333 | 495.0 | 312.0 | 1.586538 | 307200 | 154440.0 | [[[ 73 83 75]\n [ 63 73 65]\n [ 47 57 ... |
| 3320 | 03321.jpg | 8.0 | 59.0 | 498.0 | 266.0 | 16 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi V8 Sedan 1994 | [8.0, 59.0, 498.0, 266.0] | 315 | 500 | 1.587302 | 490.0 | 207.0 | 2.367150 | 157500 | 101430.0 | [[[122 90 65]\n [120 88 63]\n [120 88 ... |
| 6880 | 06881.jpg | 28.0 | 75.0 | 618.0 | 290.0 | 84 | C:\Users\uprak\capstone\Car Images\Train Image... | Dodge Caliber Wagon 2007 | [28.0, 75.0, 618.0, 290.0] | 360 | 640 | 1.777778 | 590.0 | 215.0 | 2.744186 | 230400 | 126850.0 | [[[ 1 1 1]\n [ 1 1 1]\n [ 1 1 ... |
| 1824 | 01825.jpg | 79.0 | 49.0 | 555.0 | 421.0 | 35 | C:\Users\uprak\capstone\Car Images\Train Image... | BMW M5 Sedan 2010 | [79.0, 49.0, 555.0, 421.0] | 480 | 640 | 1.333333 | 476.0 | 372.0 | 1.279570 | 307200 | 177072.0 | [[[255 255 255]\n [255 255 255]\n [255 255 2... |
| 7349 | 07350.jpg | 24.0 | 48.0 | 646.0 | 337.0 | 128 | C:\Users\uprak\capstone\Car Images\Train Image... | Honda Accord Coupe 2012 | [24.0, 48.0, 646.0, 337.0] | 370 | 660 | 1.783784 | 622.0 | 289.0 | 2.152249 | 244200 | 179758.0 | [[[ 71 78 84]\n [ 72 79 85]\n [ 73 80 ... |
| 2237 | 02238.jpg | 68.0 | 135.0 | 389.0 | 282.0 | 138 | C:\Users\uprak\capstone\Car Images\Train Image... | Hyundai Sonata Sedan 2012 | [68.0, 135.0, 389.0, 282.0] | 360 | 540 | 1.500000 | 321.0 | 147.0 | 2.183673 | 194400 | 47187.0 | [[[125 106 110]\n [125 106 110]\n [126 107 1... |
| 4571 | 04572.jpg | 3.0 | 122.0 | 550.0 | 333.0 | 82 | C:\Users\uprak\capstone\Car Images\Train Image... | Daewoo Nubira Wagon 2002 | [3.0, 122.0, 550.0, 333.0] | 415 | 554 | 1.334940 | 547.0 | 211.0 | 2.592417 | 229910 | 115417.0 | [[[224 229 248]\n [226 232 248]\n [226 229 2... |
#df_train['Img_AR'] = df_train['Orig_img_width']/df_train['Orig_img_height']
#df_train['bb_width'] = df_train['End_x'] - df_train['Start_x']
#df_train['bb_height'] = df_train['End_y'] - df_train['Start_y']
#df_train['bb_AR'] = df_train['bb_width']/df_train['bb_height']
#df_test['Img_AR'] = df_test['Orig_img_width']/df_test['Orig_img_height']
#df_test['bb_width'] = df_test['End_x'] - df_test['Start_x']
#df_test['bb_height'] = df_test['End_y'] - df_test['Start_y']
#df_test['bb_AR'] = df_test['bb_width']/df_test['bb_height']
df_train.sample(5)
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | Orig_img_height | Orig_img_width | Img_AR | bb_width | bb_height | bb_AR | img_area | bb_area | Images | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3817 | 03818.jpg | 96.0 | 82.0 | 709.0 | 468.0 | 14 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi TTS Coupe 2012 | [96.0, 82.0, 709.0, 468.0] | 600 | 800 | 1.333333 | 613.0 | 386.0 | 1.588083 | 480000 | 236618.0 | [[[132 163 96]\n [124 155 88]\n [115 146 ... |
| 1844 | 01845.jpg | 65.0 | 65.0 | 268.0 | 180.0 | 162 | C:\Users\uprak\capstone\Car Images\Train Image... | Mercedes-Benz C-Class Sedan 2012 | [65.0, 65.0, 268.0, 180.0] | 225 | 300 | 1.333333 | 203.0 | 115.0 | 1.765217 | 67500 | 23345.0 | [[[254 254 254]\n [255 255 255]\n [255 255 2... |
| 8043 | 08044.jpg | 32.0 | 121.0 | 651.0 | 410.0 | 10 | C:\Users\uprak\capstone\Car Images\Train Image... | Aston Martin Virage Convertible 2012 | [32.0, 121.0, 651.0, 410.0] | 455 | 680 | 1.494505 | 619.0 | 289.0 | 2.141869 | 309400 | 178891.0 | [[[ 15 14 10]\n [ 17 16 12]\n [ 16 14 ... |
| 6792 | 06793.jpg | 17.0 | 71.0 | 227.0 | 175.0 | 21 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi S5 Convertible 2012 | [17.0, 71.0, 227.0, 175.0] | 194 | 259 | 1.335052 | 210.0 | 104.0 | 2.019231 | 50246 | 21840.0 | [[[189 176 183]\n [189 176 183]\n [189 176 1... |
| 5715 | 05716.jpg | 110.0 | 64.0 | 1036.0 | 677.0 | 89 | C:\Users\uprak\capstone\Car Images\Train Image... | Dodge Journey SUV 2012 | [110.0, 64.0, 1036.0, 677.0] | 768 | 1149 | 1.496094 | 926.0 | 613.0 | 1.510604 | 882432 | 567638.0 | [[[255 242 235]\n [255 243 241]\n [255 248 2... |
#df_train['img_area'] = df_train['Orig_img_width']*df_train['Orig_img_height']
#df_train['bb_area'] = df_train['bb_width'] * df_train['bb_height']
#df_test['img_area'] = df_test['Orig_img_width']*df_test['Orig_img_height']
#df_test['bb_area'] = df_test['bb_width'] * df_test['bb_height']
#df_train.sample(5)
cols = list(df_train.columns)
cols
['Image_Name', 'Start_x', 'Start_y', 'End_x', 'End_y', 'Image_class', 'Image_Path', 'Car_Name', 'Bbox', 'Orig_img_height', 'Orig_img_width', 'Img_AR', 'bb_width', 'bb_height', 'bb_AR', 'img_area', 'bb_area', 'Images']
df_test.columns
Index(['Image_Name', 'Start_x', 'Start_y', 'End_x', 'End_y', 'Image_class',
'Image_Path', 'Car_Name', 'Bbox', 'Orig_img_height', 'Orig_img_width',
'Images'],
dtype='object')
df_test
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | Orig_img_height | Orig_img_width | Images | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 00001.jpg | 30.0 | 52.0 | 246.0 | 147.0 | 181 | C:\Users\uprak\capstone\Car Images\Test Images... | Suzuki Aerio Sedan 2007 | [30.0, 52.0, 246.0, 147.0] | 182 | 276 | [[[254 254 254]\n [254 254 254]\n [254 254 2... |
| 1 | 00002.jpg | 100.0 | 19.0 | 576.0 | 203.0 | 103 | C:\Users\uprak\capstone\Car Images\Test Images... | Ferrari 458 Italia Convertible 2012 | [100.0, 19.0, 576.0, 203.0] | 360 | 640 | [[[126 122 119]\n [124 120 117]\n [121 117 1... |
| 2 | 00003.jpg | 51.0 | 105.0 | 968.0 | 659.0 | 145 | C:\Users\uprak\capstone\Car Images\Test Images... | Jeep Patriot SUV 2012 | [51.0, 105.0, 968.0, 659.0] | 741 | 1024 | [[[161 160 166]\n [159 158 164]\n [157 156 1... |
| 3 | 00004.jpg | 67.0 | 84.0 | 581.0 | 407.0 | 187 | C:\Users\uprak\capstone\Car Images\Test Images... | Toyota Camry Sedan 2012 | [67.0, 84.0, 581.0, 407.0] | 480 | 640 | [[[ 21 21 21]\n [ 24 24 24]\n [ 22 22 ... |
| 4 | 00005.jpg | 140.0 | 151.0 | 593.0 | 339.0 | 185 | C:\Users\uprak\capstone\Car Images\Test Images... | Tesla Model S Sedan 2012 | [140.0, 151.0, 593.0, 339.0] | 373 | 600 | [[[254 254 242]\n [254 254 242]\n [254 254 2... |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 8036 | 08037.jpg | 49.0 | 57.0 | 1169.0 | 669.0 | 63 | C:\Users\uprak\capstone\Car Images\Test Images... | Chevrolet Sonic Sedan 2012 | [49.0, 57.0, 1169.0, 669.0] | 800 | 1200 | [[[ 93 77 77]\n [ 92 76 76]\n [ 91 75 ... |
| 8037 | 08038.jpg | 23.0 | 18.0 | 640.0 | 459.0 | 16 | C:\Users\uprak\capstone\Car Images\Test Images... | Audi V8 Sedan 1994 | [23.0, 18.0, 640.0, 459.0] | 480 | 640 | [[[ 54 51 42]\n [ 50 47 38]\n [ 51 48 ... |
| 8038 | 08039.jpg | 33.0 | 27.0 | 602.0 | 252.0 | 17 | C:\Users\uprak\capstone\Car Images\Test Images... | Audi 100 Sedan 1994 | [33.0, 27.0, 602.0, 252.0] | 303 | 635 | [[[122 83 54]\n [112 75 46]\n [120 83 ... |
| 8039 | 08040.jpg | 33.0 | 142.0 | 521.0 | 376.0 | 38 | C:\Users\uprak\capstone\Car Images\Test Images... | BMW Z4 Convertible 2012 | [33.0, 142.0, 521.0, 376.0] | 427 | 640 | [[[ 74 61 44]\n [ 74 61 44]\n [ 74 61 ... |
| 8040 | 08041.jpg | 77.0 | 73.0 | 506.0 | 380.0 | 32 | C:\Users\uprak\capstone\Car Images\Test Images... | BMW X5 SUV 2007 | [77.0, 73.0, 506.0, 380.0] | 426 | 640 | [[[ 39 39 31]\n [ 71 71 63]\n [ 45 45 ... |
8041 rows × 12 columns
df_test.sample(5)
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | Orig_img_height | Orig_img_width | Images | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4093 | 04094.jpg | 229.0 | 254.0 | 1473.0 | 730.0 | 31 | C:\Users\uprak\capstone\Car Images\Test Images... | BMW 6 Series Convertible 2007 | [229.0, 254.0, 1473.0, 730.0] | 1050 | 1680 | [[[ 9 4 1]\n [ 8 4 5]\n [ 0 11 ... |
| 2181 | 02182.jpg | 26.0 | 132.0 | 1009.0 | 675.0 | 6 | C:\Users\uprak\capstone\Car Images\Test Images... | Acura Integra Type R 2001 | [26.0, 132.0, 1009.0, 675.0] | 768 | 1024 | [[[ 15 22 14]\n [ 16 23 15]\n [ 17 24 ... |
| 3390 | 03391.jpg | 76.0 | 155.0 | 448.0 | 275.0 | 153 | C:\Users\uprak\capstone\Car Images\Test Images... | Lamborghini Diablo Coupe 2001 | [76.0, 155.0, 448.0, 275.0] | 333 | 500 | [[[ 4 2 3]\n [ 1 0 0]\n [ 1 0 ... |
| 422 | 00423.jpg | 51.0 | 281.0 | 965.0 | 686.0 | 34 | C:\Users\uprak\capstone\Car Images\Test Images... | BMW M3 Coupe 2012 | [51.0, 281.0, 965.0, 686.0] | 768 | 1024 | [[[202 202 212]\n [206 209 218]\n [202 204 2... |
| 5978 | 05979.jpg | 62.0 | 59.0 | 359.0 | 301.0 | 139 | C:\Users\uprak\capstone\Car Images\Test Images... | Hyundai Elantra Touring Hatchback 2012 | [62.0, 59.0, 359.0, 301.0] | 360 | 424 | [[[255 255 255]\n [255 255 255]\n [255 255 2... |
df_group = df_train.groupby(by=['Image_class']).mean()
df_group
| Start_x | Start_y | End_x | End_y | Orig_img_height | Orig_img_width | Img_AR | bb_width | bb_height | bb_AR | img_area | bb_area | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Image_class | ||||||||||||
| 1 | 33.355556 | 67.333333 | 449.688889 | 306.000000 | 338.777778 | 491.133333 | 1.488229 | 416.333333 | 238.666667 | 1.733447 | 339422.000000 | 185725.533333 |
| 2 | 69.718750 | 113.250000 | 633.250000 | 380.281250 | 444.343750 | 694.250000 | 1.626136 | 563.531250 | 267.031250 | 2.193562 | 421385.937500 | 192106.718750 |
| 3 | 63.953488 | 99.046512 | 657.558140 | 419.860465 | 482.976744 | 714.046512 | 1.490232 | 593.604651 | 320.813953 | 1.999234 | 510487.860465 | 294358.186047 |
| 4 | 50.380952 | 131.261905 | 673.285714 | 435.357143 | 505.428571 | 720.023810 | 1.427891 | 622.904762 | 304.095238 | 2.079940 | 416349.880952 | 211456.714286 |
| 5 | 47.195122 | 95.853659 | 486.926829 | 313.414634 | 370.536585 | 529.878049 | 1.467877 | 439.731707 | 217.560976 | 2.016969 | 346084.951220 | 169860.097561 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 192 | 116.395349 | 163.162791 | 912.906977 | 600.930233 | 699.348837 | 1021.767442 | 1.480585 | 796.511628 | 437.767442 | 1.924556 | 825807.209302 | 433913.860465 |
| 193 | 83.833333 | 113.166667 | 693.047619 | 454.404762 | 517.261905 | 778.547619 | 1.541277 | 609.214286 | 341.238095 | 1.873040 | 487950.666667 | 241788.619048 |
| 194 | 84.391304 | 123.260870 | 787.304348 | 485.195652 | 566.913043 | 837.391304 | 1.539087 | 702.913043 | 361.934783 | 2.088240 | 537252.239130 | 285973.065217 |
| 195 | 54.674419 | 74.581395 | 550.883721 | 367.627907 | 409.813953 | 595.023256 | 1.478335 | 496.209302 | 293.046512 | 1.713090 | 288334.674419 | 171179.627907 |
| 196 | 62.750000 | 70.550000 | 553.850000 | 391.575000 | 426.250000 | 623.525000 | 1.462446 | 491.100000 | 321.025000 | 1.526207 | 373605.325000 | 218841.350000 |
196 rows × 12 columns
df_group.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 196 entries, 1 to 196 Data columns (total 12 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Start_x 196 non-null float64 1 Start_y 196 non-null float64 2 End_x 196 non-null float64 3 End_y 196 non-null float64 4 Orig_img_height 196 non-null float64 5 Orig_img_width 196 non-null float64 6 Img_AR 196 non-null float64 7 bb_width 196 non-null float64 8 bb_height 196 non-null float64 9 bb_AR 196 non-null float64 10 img_area 196 non-null float64 11 bb_area 196 non-null float64 dtypes: float64(12) memory usage: 19.9 KB
df_group.describe().transpose()
| count | mean | std | min | 25% | 50% | 75% | max | |
|---|---|---|---|---|---|---|---|---|
| Start_x | 196.0 | 64.969904 | 28.874050 | 22.813953 | 42.609226 | 57.319580 | 77.561163 | 1.846591e+02 |
| Start_y | 196.0 | 108.318143 | 37.164405 | 39.025000 | 83.025877 | 101.064857 | 127.836051 | 2.608182e+02 |
| End_x | 196.0 | 634.928421 | 172.482091 | 317.275000 | 514.339039 | 609.108935 | 701.699275 | 1.431727e+03 |
| End_y | 196.0 | 414.032831 | 117.179856 | 229.000000 | 333.580952 | 391.145105 | 464.607919 | 9.897955e+02 |
| Orig_img_height | 196.0 | 479.946622 | 135.123858 | 252.225000 | 386.267970 | 453.641026 | 529.396959 | 1.140000e+03 |
| Orig_img_width | 196.0 | 696.466378 | 194.958120 | 349.500000 | 562.917930 | 665.098930 | 771.282998 | 1.579250e+03 |
| Img_AR | 196.0 | 1.475325 | 0.062479 | 1.340796 | 1.427664 | 1.474263 | 1.516778 | 1.694495e+00 |
| bb_width | 196.0 | 569.958517 | 150.505356 | 285.575000 | 467.374492 | 549.422025 | 627.529194 | 1.247068e+03 |
| bb_height | 196.0 | 305.714688 | 90.111618 | 169.750000 | 247.029167 | 286.353309 | 338.530454 | 7.435682e+02 |
| bb_AR | 196.0 | 1.953022 | 0.200483 | 1.374284 | 1.817158 | 1.943708 | 2.089676 | 2.441710e+00 |
| img_area | 196.0 | 471668.232939 | 282418.224726 | 130582.125000 | 298792.795094 | 402777.703523 | 543557.405098 | 1.922553e+06 |
| bb_area | 196.0 | 246246.701083 | 153703.305672 | 68165.500000 | 150833.660714 | 203522.201252 | 289702.911364 | 1.115018e+06 |
df_train.head(10)
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | Orig_img_height | Orig_img_width | Img_AR | bb_width | bb_height | bb_AR | img_area | bb_area | Images | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 00001.jpg | 39.0 | 116.0 | 569.0 | 375.0 | 14 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi TTS Coupe 2012 | [39.0, 116.0, 569.0, 375.0] | 400 | 600 | 1.500000 | 530.0 | 259.0 | 2.046332 | 240000 | 137270.0 | [[[101 119 123]\n [ 98 116 120]\n [ 93 111 1... |
| 1 | 00002.jpg | 36.0 | 116.0 | 868.0 | 587.0 | 3 | C:\Users\uprak\capstone\Car Images\Train Image... | Acura TL Sedan 2012 | [36.0, 116.0, 868.0, 587.0] | 675 | 900 | 1.333333 | 832.0 | 471.0 | 1.766454 | 607500 | 391872.0 | [[[164 169 175]\n [166 171 177]\n [169 174 1... |
| 2 | 00003.jpg | 85.0 | 109.0 | 601.0 | 381.0 | 91 | C:\Users\uprak\capstone\Car Images\Train Image... | Dodge Dakota Club Cab 2007 | [85.0, 109.0, 601.0, 381.0] | 480 | 640 | 1.333333 | 516.0 | 272.0 | 1.897059 | 307200 | 140352.0 | [[[231 231 231]\n [244 244 244]\n [234 234 2... |
| 3 | 00004.jpg | 621.0 | 393.0 | 1484.0 | 1096.0 | 134 | C:\Users\uprak\capstone\Car Images\Train Image... | Hyundai Sonata Hybrid Sedan 2012 | [621.0, 393.0, 1484.0, 1096.0] | 1386 | 2100 | 1.515152 | 863.0 | 703.0 | 1.227596 | 2910600 | 606689.0 | [[[255 255 255]\n [255 255 255]\n [255 255 2... |
| 4 | 00005.jpg | 14.0 | 36.0 | 133.0 | 99.0 | 106 | C:\Users\uprak\capstone\Car Images\Train Image... | Ford F-450 Super Duty Crew Cab 2012 | [14.0, 36.0, 133.0, 99.0] | 108 | 144 | 1.333333 | 119.0 | 63.0 | 1.888889 | 15552 | 7497.0 | [[[136 167 196]\n [136 167 196]\n [138 169 1... |
| 5 | 00006.jpg | 259.0 | 289.0 | 515.0 | 416.0 | 123 | C:\Users\uprak\capstone\Car Images\Train Image... | Geo Metro Convertible 1993 | [259.0, 289.0, 515.0, 416.0] | 431 | 575 | 1.334107 | 256.0 | 127.0 | 2.015748 | 247825 | 32512.0 | [[[161 183 241]\n [161 183 241]\n [161 183 2... |
| 6 | 00007.jpg | 88.0 | 80.0 | 541.0 | 397.0 | 89 | C:\Users\uprak\capstone\Car Images\Train Image... | Dodge Journey SUV 2012 | [88.0, 80.0, 541.0, 397.0] | 480 | 640 | 1.333333 | 453.0 | 317.0 | 1.429022 | 307200 | 143601.0 | [[[ 40 44 47]\n [ 40 44 47]\n [ 40 44 ... |
| 7 | 00008.jpg | 73.0 | 79.0 | 591.0 | 410.0 | 96 | C:\Users\uprak\capstone\Car Images\Train Image... | Dodge Charger Sedan 2012 | [73.0, 79.0, 591.0, 410.0] | 480 | 639 | 1.331250 | 518.0 | 331.0 | 1.564955 | 306720 | 171458.0 | [[[255 255 255]\n [255 255 255]\n [255 255 2... |
| 8 | 00009.jpg | 20.0 | 126.0 | 1269.0 | 771.0 | 167 | C:\Users\uprak\capstone\Car Images\Train Image... | Mitsubishi Lancer Sedan 2012 | [20.0, 126.0, 1269.0, 771.0] | 843 | 1280 | 1.518387 | 1249.0 | 645.0 | 1.936434 | 1079040 | 805605.0 | [[[103 106 99]\n [ 81 76 72]\n [115 104 1... |
| 9 | 00010.jpg | 21.0 | 110.0 | 623.0 | 367.0 | 58 | C:\Users\uprak\capstone\Car Images\Train Image... | Chevrolet Traverse SUV 2012 | [21.0, 110.0, 623.0, 367.0] | 480 | 640 | 1.333333 | 602.0 | 257.0 | 2.342412 | 307200 | 154714.0 | [[[255 255 255]\n [255 255 255]\n [255 255 2... |
df_train.describe().transpose()
| count | mean | std | min | 25% | 50% | 75% | max | |
|---|---|---|---|---|---|---|---|---|
| Start_x | 8144.0 | 64.906803 | 82.198684 | 1.000000 | 19.000000 | 39.000000 | 79.000000 | 1.648000e+03 |
| Start_y | 8144.0 | 108.661223 | 104.551635 | 1.000000 | 42.000000 | 80.000000 | 138.250000 | 1.508000e+03 |
| End_x | 8144.0 | 638.208620 | 410.776734 | 76.000000 | 392.000000 | 569.000000 | 746.250000 | 5.205000e+03 |
| End_y | 8144.0 | 416.431606 | 273.786000 | 47.000000 | 248.000000 | 360.000000 | 477.000000 | 3.389000e+03 |
| Image_class | 8144.0 | 98.979371 | 56.503148 | 1.000000 | 50.000000 | 99.000000 | 148.000000 | 1.960000e+02 |
| Orig_img_height | 8144.0 | 482.771979 | 317.580021 | 57.000000 | 290.000000 | 424.000000 | 540.000000 | 3.744000e+03 |
| Orig_img_width | 8144.0 | 699.793099 | 450.922445 | 78.000000 | 429.000000 | 636.500000 | 800.000000 | 5.616000e+03 |
| Img_AR | 8144.0 | 1.473561 | 0.232987 | 0.593066 | 1.333333 | 1.348485 | 1.519757 | 3.887538e+00 |
| bb_width | 8144.0 | 573.301817 | 375.675050 | 73.000000 | 338.000000 | 504.000000 | 659.000000 | 4.156000e+03 |
| bb_height | 8144.0 | 307.770383 | 213.463238 | 23.000000 | 173.000000 | 260.000000 | 370.000000 | 2.648000e+03 |
| bb_AR | 8144.0 | 1.951161 | 0.488941 | 0.559322 | 1.593023 | 1.867606 | 2.249385 | 3.975000e+00 |
| img_area | 8144.0 | 477026.917117 | 890130.689330 | 4524.000000 | 121240.000000 | 265752.000000 | 432363.750000 | 2.102630e+07 |
| bb_area | 8144.0 | 249462.668713 | 494907.035699 | 1748.000000 | 59735.000000 | 130497.000000 | 237495.750000 | 9.874656e+06 |
df_train.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 8144 entries, 0 to 8143 Data columns (total 18 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Image_Name 8144 non-null object 1 Start_x 8144 non-null float64 2 Start_y 8144 non-null float64 3 End_x 8144 non-null float64 4 End_y 8144 non-null float64 5 Image_class 8144 non-null int64 6 Image_Path 8144 non-null object 7 Car_Name 8144 non-null object 8 Bbox 8144 non-null object 9 Orig_img_height 8144 non-null int64 10 Orig_img_width 8144 non-null int64 11 Img_AR 8144 non-null float64 12 bb_width 8144 non-null float64 13 bb_height 8144 non-null float64 14 bb_AR 8144 non-null float64 15 img_area 8144 non-null int64 16 bb_area 8144 non-null float64 17 Images 8144 non-null object dtypes: float64(9), int64(4), object(5) memory usage: 1.1+ MB
df_train[df_train['Orig_img_height'].isna()]
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | Orig_img_height | Orig_img_width | Img_AR | bb_width | bb_height | bb_AR | img_area | bb_area | Images |
|---|
def read_image(path):
im = cv.imread(str(path))
return cv.cvtColor(im, cv.COLOR_BGR2RGB)
#image_paths = list(df_train['Image_Path'])
#images = [read_image(p) for p in image_paths]
#df_train['Images'] = images
#df_train.to_csv("train1.csv", index=False)
#image_paths = list(df_test['Image_Path'])
#images = [read_image(p) for p in image_paths]
#df_test['Images'] = images
#df_test.to_csv("test1.csv", index=False)
BOX_COLOR = (255, 0, 0) # Red
TEXT_COLOR = (255, 255, 255) # White
def visualize_bbox(img, bbox, class_name, color=BOX_COLOR, thickness=2):
"""Visualizes a single bounding box on the image"""
x_min, y_min, x_max, y_max = map(int,bbox)
cv.rectangle(img, (x_min, y_min), (x_max, y_max), color=BOX_COLOR, thickness=thickness)
((text_width, text_height), _) = cv.getTextSize(class_name, cv.FONT_HERSHEY_SIMPLEX, 0.35, 1)
cv.rectangle(img, (x_min, (y_min - int(0.3 * text_height))), (x_min + text_width, y_min), BOX_COLOR, -1)
cv.putText(
img,
text=class_name,
org=(x_min, y_min - int(0.3 * text_height)),
fontFace=cv.FONT_HERSHEY_SIMPLEX,
fontScale=0.35,
color=TEXT_COLOR,
lineType=cv.LINE_AA,
)
return img
def visualize(image_list, bbox_list, class_list):
count = 0
image_final = []
for images in image_list:
#print(img)
bbox = bbox_list[count]
#print(bbox)
class_name = class_list[count]
#print(class_name)
img = visualize_bbox(images, bbox, class_name)
image_final.append(img)
count = count + 1
return image_final
df_train['Bbox'] = df_train.apply(lambda x:list([x['Start_x'],x['Start_y'],x['End_x'],x['End_y']]),axis=1)
df_train
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | Orig_img_height | Orig_img_width | Img_AR | bb_width | bb_height | bb_AR | img_area | bb_area | Images | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 00001.jpg | 39.0 | 116.0 | 569.0 | 375.0 | 14 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi TTS Coupe 2012 | [39.0, 116.0, 569.0, 375.0] | 400 | 600 | 1.500000 | 530.0 | 259.0 | 2.046332 | 240000 | 137270.0 | [[[101 119 123]\n [ 98 116 120]\n [ 93 111 1... |
| 1 | 00002.jpg | 36.0 | 116.0 | 868.0 | 587.0 | 3 | C:\Users\uprak\capstone\Car Images\Train Image... | Acura TL Sedan 2012 | [36.0, 116.0, 868.0, 587.0] | 675 | 900 | 1.333333 | 832.0 | 471.0 | 1.766454 | 607500 | 391872.0 | [[[164 169 175]\n [166 171 177]\n [169 174 1... |
| 2 | 00003.jpg | 85.0 | 109.0 | 601.0 | 381.0 | 91 | C:\Users\uprak\capstone\Car Images\Train Image... | Dodge Dakota Club Cab 2007 | [85.0, 109.0, 601.0, 381.0] | 480 | 640 | 1.333333 | 516.0 | 272.0 | 1.897059 | 307200 | 140352.0 | [[[231 231 231]\n [244 244 244]\n [234 234 2... |
| 3 | 00004.jpg | 621.0 | 393.0 | 1484.0 | 1096.0 | 134 | C:\Users\uprak\capstone\Car Images\Train Image... | Hyundai Sonata Hybrid Sedan 2012 | [621.0, 393.0, 1484.0, 1096.0] | 1386 | 2100 | 1.515152 | 863.0 | 703.0 | 1.227596 | 2910600 | 606689.0 | [[[255 255 255]\n [255 255 255]\n [255 255 2... |
| 4 | 00005.jpg | 14.0 | 36.0 | 133.0 | 99.0 | 106 | C:\Users\uprak\capstone\Car Images\Train Image... | Ford F-450 Super Duty Crew Cab 2012 | [14.0, 36.0, 133.0, 99.0] | 108 | 144 | 1.333333 | 119.0 | 63.0 | 1.888889 | 15552 | 7497.0 | [[[136 167 196]\n [136 167 196]\n [138 169 1... |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 8139 | 08140.jpg | 3.0 | 44.0 | 423.0 | 336.0 | 78 | C:\Users\uprak\capstone\Car Images\Train Image... | Chrysler Town and Country Minivan 2012 | [3.0, 44.0, 423.0, 336.0] | 360 | 424 | 1.177778 | 420.0 | 292.0 | 1.438356 | 152640 | 122640.0 | [[[255 255 255]\n [255 255 255]\n [255 255 2... |
| 8140 | 08141.jpg | 138.0 | 150.0 | 706.0 | 523.0 | 196 | C:\Users\uprak\capstone\Car Images\Train Image... | smart fortwo Convertible 2012 | [138.0, 150.0, 706.0, 523.0] | 600 | 800 | 1.333333 | 568.0 | 373.0 | 1.522788 | 480000 | 211864.0 | [[[ 79 79 53]\n [ 79 79 53]\n [ 79 79 ... |
| 8141 | 08142.jpg | 26.0 | 246.0 | 660.0 | 449.0 | 163 | C:\Users\uprak\capstone\Car Images\Train Image... | Mercedes-Benz SL-Class Coupe 2009 | [26.0, 246.0, 660.0, 449.0] | 469 | 750 | 1.599147 | 634.0 | 203.0 | 3.123153 | 351750 | 128702.0 | [[[108 113 106]\n [111 116 109]\n [111 116 1... |
| 8142 | 08143.jpg | 78.0 | 526.0 | 1489.0 | 908.0 | 112 | C:\Users\uprak\capstone\Car Images\Train Image... | Ford GT Coupe 2006 | [78.0, 526.0, 1489.0, 908.0] | 1067 | 1600 | 1.499531 | 1411.0 | 382.0 | 3.693717 | 1707200 | 539002.0 | [[[ 84 83 78]\n [ 72 72 64]\n [ 59 60 ... |
| 8143 | 08144.jpg | 20.0 | 240.0 | 862.0 | 677.0 | 17 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi 100 Sedan 1994 | [20.0, 240.0, 862.0, 677.0] | 683 | 883 | 1.292826 | 842.0 | 437.0 | 1.926773 | 603089 | 367954.0 | [[[70 70 70]\n [70 70 70]\n [70 70 70]\n ..... |
8144 rows × 18 columns
df_test['Bbox'] = df_test.apply(lambda x:list([x['Start_x'],x['Start_y'],x['End_x'],x['End_y']]),axis=1)
df_test
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | Orig_img_height | Orig_img_width | Images | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 00001.jpg | 30.0 | 52.0 | 246.0 | 147.0 | 181 | C:\Users\uprak\capstone\Car Images\Test Images... | Suzuki Aerio Sedan 2007 | [30.0, 52.0, 246.0, 147.0] | 182 | 276 | [[[254 254 254]\n [254 254 254]\n [254 254 2... |
| 1 | 00002.jpg | 100.0 | 19.0 | 576.0 | 203.0 | 103 | C:\Users\uprak\capstone\Car Images\Test Images... | Ferrari 458 Italia Convertible 2012 | [100.0, 19.0, 576.0, 203.0] | 360 | 640 | [[[126 122 119]\n [124 120 117]\n [121 117 1... |
| 2 | 00003.jpg | 51.0 | 105.0 | 968.0 | 659.0 | 145 | C:\Users\uprak\capstone\Car Images\Test Images... | Jeep Patriot SUV 2012 | [51.0, 105.0, 968.0, 659.0] | 741 | 1024 | [[[161 160 166]\n [159 158 164]\n [157 156 1... |
| 3 | 00004.jpg | 67.0 | 84.0 | 581.0 | 407.0 | 187 | C:\Users\uprak\capstone\Car Images\Test Images... | Toyota Camry Sedan 2012 | [67.0, 84.0, 581.0, 407.0] | 480 | 640 | [[[ 21 21 21]\n [ 24 24 24]\n [ 22 22 ... |
| 4 | 00005.jpg | 140.0 | 151.0 | 593.0 | 339.0 | 185 | C:\Users\uprak\capstone\Car Images\Test Images... | Tesla Model S Sedan 2012 | [140.0, 151.0, 593.0, 339.0] | 373 | 600 | [[[254 254 242]\n [254 254 242]\n [254 254 2... |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 8036 | 08037.jpg | 49.0 | 57.0 | 1169.0 | 669.0 | 63 | C:\Users\uprak\capstone\Car Images\Test Images... | Chevrolet Sonic Sedan 2012 | [49.0, 57.0, 1169.0, 669.0] | 800 | 1200 | [[[ 93 77 77]\n [ 92 76 76]\n [ 91 75 ... |
| 8037 | 08038.jpg | 23.0 | 18.0 | 640.0 | 459.0 | 16 | C:\Users\uprak\capstone\Car Images\Test Images... | Audi V8 Sedan 1994 | [23.0, 18.0, 640.0, 459.0] | 480 | 640 | [[[ 54 51 42]\n [ 50 47 38]\n [ 51 48 ... |
| 8038 | 08039.jpg | 33.0 | 27.0 | 602.0 | 252.0 | 17 | C:\Users\uprak\capstone\Car Images\Test Images... | Audi 100 Sedan 1994 | [33.0, 27.0, 602.0, 252.0] | 303 | 635 | [[[122 83 54]\n [112 75 46]\n [120 83 ... |
| 8039 | 08040.jpg | 33.0 | 142.0 | 521.0 | 376.0 | 38 | C:\Users\uprak\capstone\Car Images\Test Images... | BMW Z4 Convertible 2012 | [33.0, 142.0, 521.0, 376.0] | 427 | 640 | [[[ 74 61 44]\n [ 74 61 44]\n [ 74 61 ... |
| 8040 | 08041.jpg | 77.0 | 73.0 | 506.0 | 380.0 | 32 | C:\Users\uprak\capstone\Car Images\Test Images... | BMW X5 SUV 2007 | [77.0, 73.0, 506.0, 380.0] | 426 | 640 | [[[ 39 39 31]\n [ 71 71 63]\n [ 45 45 ... |
8041 rows × 12 columns
df_visualize = df_train.sample(100)
image_paths = list(df_visualize['Image_Path'])
images = [read_image(p) for p in image_paths]
#images = np.array(df_visualize['Images'])
image_name = list(df_visualize['Car_Name'])
bbox_list = list(df_visualize['Bbox'])
image = visualize(images,bbox_list,image_name)
fig = plt.figure(figsize=(20, 20))
columns = 10
rows = 10
pics = []
for i in range(columns*rows):
pics.append(fig.add_subplot(rows, columns, i+1,title=image_name[i]))
plt.imshow(image[i])
plt.show()
df_test_visualize = df_test.sample(100)
image_paths = list(df_test_visualize['Image_Path'])
images = [read_image(p) for p in image_paths]
#images = np.array(df_visualize['Images'])
image_name = list(df_test_visualize['Car_Name'])
bbox_list = list(df_test_visualize['Bbox'])
image = visualize(images,bbox_list,image_name)
fig = plt.figure(figsize=(20, 20))
columns = 10
rows = 10
pics = []
for i in range(columns*rows):
pics.append(fig.add_subplot(rows, columns, i+1,title=image_name[i]))
plt.imshow(image[i])
plt.show()
df_train.describe().transpose()
| count | mean | std | min | 25% | 50% | 75% | max | |
|---|---|---|---|---|---|---|---|---|
| Start_x | 8144.0 | 64.906803 | 82.198684 | 1.000000 | 19.000000 | 39.000000 | 79.000000 | 1.648000e+03 |
| Start_y | 8144.0 | 108.661223 | 104.551635 | 1.000000 | 42.000000 | 80.000000 | 138.250000 | 1.508000e+03 |
| End_x | 8144.0 | 638.208620 | 410.776734 | 76.000000 | 392.000000 | 569.000000 | 746.250000 | 5.205000e+03 |
| End_y | 8144.0 | 416.431606 | 273.786000 | 47.000000 | 248.000000 | 360.000000 | 477.000000 | 3.389000e+03 |
| Image_class | 8144.0 | 98.979371 | 56.503148 | 1.000000 | 50.000000 | 99.000000 | 148.000000 | 1.960000e+02 |
| Orig_img_height | 8144.0 | 482.771979 | 317.580021 | 57.000000 | 290.000000 | 424.000000 | 540.000000 | 3.744000e+03 |
| Orig_img_width | 8144.0 | 699.793099 | 450.922445 | 78.000000 | 429.000000 | 636.500000 | 800.000000 | 5.616000e+03 |
| Img_AR | 8144.0 | 1.473561 | 0.232987 | 0.593066 | 1.333333 | 1.348485 | 1.519757 | 3.887538e+00 |
| bb_width | 8144.0 | 573.301817 | 375.675050 | 73.000000 | 338.000000 | 504.000000 | 659.000000 | 4.156000e+03 |
| bb_height | 8144.0 | 307.770383 | 213.463238 | 23.000000 | 173.000000 | 260.000000 | 370.000000 | 2.648000e+03 |
| bb_AR | 8144.0 | 1.951161 | 0.488941 | 0.559322 | 1.593023 | 1.867606 | 2.249385 | 3.975000e+00 |
| img_area | 8144.0 | 477026.917117 | 890130.689330 | 4524.000000 | 121240.000000 | 265752.000000 | 432363.750000 | 2.102630e+07 |
| bb_area | 8144.0 | 249462.668713 | 494907.035699 | 1748.000000 | 59735.000000 | 130497.000000 | 237495.750000 | 9.874656e+06 |
df_train['bb_area/img_area'] = df_train['bb_area']/df_train['img_area']
df_train.head(5)
| Image_Name | Start_x | Start_y | End_x | End_y | Image_class | Image_Path | Car_Name | Bbox | Orig_img_height | Orig_img_width | Img_AR | bb_width | bb_height | bb_AR | img_area | bb_area | Images | bb_area/img_area | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 00001.jpg | 39.0 | 116.0 | 569.0 | 375.0 | 14 | C:\Users\uprak\capstone\Car Images\Train Image... | Audi TTS Coupe 2012 | [39.0, 116.0, 569.0, 375.0] | 400 | 600 | 1.500000 | 530.0 | 259.0 | 2.046332 | 240000 | 137270.0 | [[[101 119 123]\n [ 98 116 120]\n [ 93 111 1... | 0.571958 |
| 1 | 00002.jpg | 36.0 | 116.0 | 868.0 | 587.0 | 3 | C:\Users\uprak\capstone\Car Images\Train Image... | Acura TL Sedan 2012 | [36.0, 116.0, 868.0, 587.0] | 675 | 900 | 1.333333 | 832.0 | 471.0 | 1.766454 | 607500 | 391872.0 | [[[164 169 175]\n [166 171 177]\n [169 174 1... | 0.645057 |
| 2 | 00003.jpg | 85.0 | 109.0 | 601.0 | 381.0 | 91 | C:\Users\uprak\capstone\Car Images\Train Image... | Dodge Dakota Club Cab 2007 | [85.0, 109.0, 601.0, 381.0] | 480 | 640 | 1.333333 | 516.0 | 272.0 | 1.897059 | 307200 | 140352.0 | [[[231 231 231]\n [244 244 244]\n [234 234 2... | 0.456875 |
| 3 | 00004.jpg | 621.0 | 393.0 | 1484.0 | 1096.0 | 134 | C:\Users\uprak\capstone\Car Images\Train Image... | Hyundai Sonata Hybrid Sedan 2012 | [621.0, 393.0, 1484.0, 1096.0] | 1386 | 2100 | 1.515152 | 863.0 | 703.0 | 1.227596 | 2910600 | 606689.0 | [[[255 255 255]\n [255 255 255]\n [255 255 2... | 0.208441 |
| 4 | 00005.jpg | 14.0 | 36.0 | 133.0 | 99.0 | 106 | C:\Users\uprak\capstone\Car Images\Train Image... | Ford F-450 Super Duty Crew Cab 2012 | [14.0, 36.0, 133.0, 99.0] | 108 | 144 | 1.333333 | 119.0 | 63.0 | 1.888889 | 15552 | 7497.0 | [[[136 167 196]\n [136 167 196]\n [138 169 1... | 0.482060 |
cols = list(df_train.columns)
cols
['Image_Name', 'Start_x', 'Start_y', 'End_x', 'End_y', 'Image_class', 'Image_Path', 'Car_Name', 'Bbox', 'Orig_img_height', 'Orig_img_width', 'Img_AR', 'bb_width', 'bb_height', 'bb_AR', 'img_area', 'bb_area', 'Images', 'bb_area/img_area']
df_eda = df_train[['Image_Name','Image_class','Bbox','Orig_img_width','Orig_img_height','Img_AR','bb_width','bb_height','bb_AR',
'img_area','bb_area','bb_area/img_area']]
df_eda.sample(10)
| Image_Name | Image_class | Bbox | Orig_img_width | Orig_img_height | Img_AR | bb_width | bb_height | bb_AR | img_area | bb_area | bb_area/img_area | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2672 | 02673.jpg | 59 | [72.0, 61.0, 541.0, 291.0] | 550 | 323 | 1.702786 | 469.0 | 230.0 | 2.039130 | 177650 | 107870.0 | 0.607205 |
| 3318 | 03319.jpg | 125 | [19.0, 35.0, 242.0, 174.0] | 259 | 194 | 1.335052 | 223.0 | 139.0 | 1.604317 | 50246 | 30997.0 | 0.616905 |
| 3178 | 03179.jpg | 149 | [196.0, 113.0, 1563.0, 1118.0] | 1920 | 1280 | 1.500000 | 1367.0 | 1005.0 | 1.360199 | 2457600 | 1373835.0 | 0.559015 |
| 5680 | 05681.jpg | 77 | [55.0, 84.0, 393.0, 278.0] | 451 | 338 | 1.334320 | 338.0 | 194.0 | 1.742268 | 152438 | 65572.0 | 0.430155 |
| 1108 | 01109.jpg | 167 | [578.0, 169.0, 1427.0, 925.0] | 1921 | 1080 | 1.778704 | 849.0 | 756.0 | 1.123016 | 2074680 | 641844.0 | 0.309370 |
| 5775 | 05776.jpg | 145 | [11.0, 87.0, 944.0, 736.0] | 1024 | 768 | 1.333333 | 933.0 | 649.0 | 1.437596 | 786432 | 605517.0 | 0.769955 |
| 2258 | 02259.jpg | 44 | [14.0, 19.0, 450.0, 274.0] | 454 | 280 | 1.621429 | 436.0 | 255.0 | 1.709804 | 127120 | 111180.0 | 0.874607 |
| 1356 | 01357.jpg | 44 | [52.0, 122.0, 750.0, 429.0] | 800 | 533 | 1.500938 | 698.0 | 307.0 | 2.273616 | 426400 | 214286.0 | 0.502547 |
| 5184 | 05185.jpg | 112 | [80.0, 231.0, 861.0, 679.0] | 1024 | 768 | 1.333333 | 781.0 | 448.0 | 1.743304 | 786432 | 349888.0 | 0.444906 |
| 2024 | 02025.jpg | 22 | [10.0, 42.0, 310.0, 180.0] | 320 | 200 | 1.600000 | 300.0 | 138.0 | 2.173913 | 64000 | 41400.0 | 0.646875 |
sns.histplot(data=df_eda,x='Img_AR',binwidth=0.1)
<AxesSubplot:xlabel='Img_AR', ylabel='Count'>
np.mean(np.array(df_eda['Img_AR']))
1.4735606114201925
sns.histplot(data=df_eda,x='bb_AR',binwidth=0.2)
<AxesSubplot:xlabel='bb_AR', ylabel='Count'>
np.mean(np.array(df_eda['bb_AR']))
1.9511606317887489
df_group.sample(5)
| Start_x | Start_y | End_x | End_y | Orig_img_height | Orig_img_width | Img_AR | bb_width | bb_height | bb_AR | img_area | bb_area | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Image_class | ||||||||||||
| 134 | 75.823529 | 122.676471 | 573.294118 | 370.352941 | 444.529412 | 665.764706 | 1.523828 | 497.470588 | 247.676471 | 2.065191 | 399625.382353 | 154786.264706 |
| 119 | 64.161765 | 85.779412 | 610.647059 | 403.235294 | 459.088235 | 664.720588 | 1.480158 | 546.485294 | 317.455882 | 1.784687 | 420236.470588 | 233624.941176 |
| 76 | 39.000000 | 65.045455 | 439.840909 | 298.681818 | 335.909091 | 483.022727 | 1.473433 | 400.840909 | 233.636364 | 1.747487 | 237099.272727 | 135174.136364 |
| 98 | 70.152174 | 154.326087 | 894.847826 | 581.782609 | 695.695652 | 974.000000 | 1.422008 | 824.695652 | 427.456522 | 2.017653 | 974127.000000 | 498596.217391 |
| 39 | 98.972973 | 118.351351 | 526.540541 | 334.729730 | 391.540541 | 599.351351 | 1.542289 | 427.567568 | 216.378378 | 2.101122 | 329751.486486 | 128508.108108 |
df_group.reset_index(inplace=True)
df_group
| Image_class | Start_x | Start_y | End_x | End_y | Orig_img_height | Orig_img_width | Img_AR | bb_width | bb_height | bb_AR | img_area | bb_area | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 33.355556 | 67.333333 | 449.688889 | 306.000000 | 338.777778 | 491.133333 | 1.488229 | 416.333333 | 238.666667 | 1.733447 | 339422.000000 | 185725.533333 |
| 1 | 2 | 69.718750 | 113.250000 | 633.250000 | 380.281250 | 444.343750 | 694.250000 | 1.626136 | 563.531250 | 267.031250 | 2.193562 | 421385.937500 | 192106.718750 |
| 2 | 3 | 63.953488 | 99.046512 | 657.558140 | 419.860465 | 482.976744 | 714.046512 | 1.490232 | 593.604651 | 320.813953 | 1.999234 | 510487.860465 | 294358.186047 |
| 3 | 4 | 50.380952 | 131.261905 | 673.285714 | 435.357143 | 505.428571 | 720.023810 | 1.427891 | 622.904762 | 304.095238 | 2.079940 | 416349.880952 | 211456.714286 |
| 4 | 5 | 47.195122 | 95.853659 | 486.926829 | 313.414634 | 370.536585 | 529.878049 | 1.467877 | 439.731707 | 217.560976 | 2.016969 | 346084.951220 | 169860.097561 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 191 | 192 | 116.395349 | 163.162791 | 912.906977 | 600.930233 | 699.348837 | 1021.767442 | 1.480585 | 796.511628 | 437.767442 | 1.924556 | 825807.209302 | 433913.860465 |
| 192 | 193 | 83.833333 | 113.166667 | 693.047619 | 454.404762 | 517.261905 | 778.547619 | 1.541277 | 609.214286 | 341.238095 | 1.873040 | 487950.666667 | 241788.619048 |
| 193 | 194 | 84.391304 | 123.260870 | 787.304348 | 485.195652 | 566.913043 | 837.391304 | 1.539087 | 702.913043 | 361.934783 | 2.088240 | 537252.239130 | 285973.065217 |
| 194 | 195 | 54.674419 | 74.581395 | 550.883721 | 367.627907 | 409.813953 | 595.023256 | 1.478335 | 496.209302 | 293.046512 | 1.713090 | 288334.674419 | 171179.627907 |
| 195 | 196 | 62.750000 | 70.550000 | 553.850000 | 391.575000 | 426.250000 | 623.525000 | 1.462446 | 491.100000 | 321.025000 | 1.526207 | 373605.325000 | 218841.350000 |
196 rows × 13 columns
df_group['Car_Name'] = df_group['Image_class'].apply(lambda x:car_dict[int(x)])
sns.barplot(data=df_group,x='Image_class',y='bb_area')
<AxesSubplot:xlabel='Image_class', ylabel='bb_area'>
np.mean(np.array(df_eda['bb_area']))
249462.66871316306
target = os.path.join(car_img_path,'train_img_resize')
image_paths = list(df_train['Image_Path'])
image_name = list(df_train['Image_Name'])
i=0
for p in image_paths:
to_file = os.path.join(target,image_name[i])
im = read_image(p)
image = np.array(tf.image.resize_with_pad(im,224,224,method=tf.image.ResizeMethod.BILINEAR,antialias=False))
#img = np.expand_dims(np.array(image,dtype=float)/255,axis=0)
image = array_to_img(image)
image.save(to_file)
#cv.imwrite(target,image,[cv.IMWRITE_JPEG_QUALITY, 50])
# if i == 0:
# imgs = np.expand_dims(np.array(image,dtype=float)/255,axis=0)
# else:
# img = np.expand_dims(np.array(image,dtype=float)/255,axis=0)
# imgs = np.append(imgs,img,axis=0)
i = i + 1
target = os.path.join(car_img_path,'test_img_resize')
image_paths = list(df_test['Image_Path'])
image_name = list(df_test['Image_Name'])
i=0
for p in image_paths:
to_file = os.path.join(target,image_name[i])
im = read_image(p)
image = np.array(tf.image.resize_with_pad(im,224,224,method=tf.image.ResizeMethod.BILINEAR,antialias=False))
#img = np.expand_dims(np.array(image,dtype=float)/255,axis=0)
image = array_to_img(image)
image.save(to_file)
#cv.imwrite(target,image,[cv.IMWRITE_JPEG_QUALITY, 50])
# if i == 0:
# imgs = np.expand_dims(np.array(image,dtype=float)/255,axis=0)
# else:
# img = np.expand_dims(np.array(image,dtype=float)/255,axis=0)
# imgs = np.append(imgs,img,axis=0)
i = i + 1
f_train_name = {}
file_path = os.path.join(car_img_path,'train_img_resize')
for filename in os.listdir(file_path):
f_train_name[filename] = os.path.join(file_path,filename)
f_test_name = {}
file_path = os.path.join(car_img_path,'test_img_resize')
for filename in os.listdir(file_path):
f_test_name[filename] = os.path.join(file_path,filename)
df_train['Resize_Image_Path'] = df_train['Image_Name'].apply(lambda x:f_train_name[x])
df_test['Resize_Image_Path'] = df_test['Image_Name'].apply(lambda x:f_test_name[x])
df_test['Resize_Image_Path']
0 C:\Users\uprak\capstone\Car Images\test_img_re...
1 C:\Users\uprak\capstone\Car Images\test_img_re...
2 C:\Users\uprak\capstone\Car Images\test_img_re...
3 C:\Users\uprak\capstone\Car Images\test_img_re...
4 C:\Users\uprak\capstone\Car Images\test_img_re...
...
8036 C:\Users\uprak\capstone\Car Images\test_img_re...
8037 C:\Users\uprak\capstone\Car Images\test_img_re...
8038 C:\Users\uprak\capstone\Car Images\test_img_re...
8039 C:\Users\uprak\capstone\Car Images\test_img_re...
8040 C:\Users\uprak\capstone\Car Images\test_img_re...
Name: Resize_Image_Path, Length: 8041, dtype: object
ytrain = list(df_train['Car_Name'])
ytest = list(df_test['Car_Name'])
train_datagen = ImageDataGenerator(rescale=1./255,validation_split=0.25)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_dataframe(df_train,directory=None, x_col='Resize_Image_Path', y_col='Car_Name',subset="training",weight_col=None,target_size=(224,224),color_mode='rgb',class_mode='categorical',batch_size=8,shuffle=True)
valid_generator = train_datagen.flow_from_dataframe(df_train,directory=None, x_col='Resize_Image_Path', y_col='Car_Name',subset="validation",weight_col=None,target_size=(224,224),color_mode='rgb',class_mode='categorical',batch_size=8,shuffle=True)
test_generator = test_datagen.flow_from_dataframe(df_test,directory=None, x_col='Resize_Image_Path', y_col=None,weight_col=None,target_size=(224,224),color_mode='rgb',class_mode=None,batch_size=8,shuffle=False)
Found 6108 validated image filenames belonging to 196 classes. Found 2036 validated image filenames belonging to 196 classes. Found 8041 validated image filenames.
class_label_map = train_generator.class_indices
class_label_map
{'AM General Hummer SUV 2000': 0,
'Acura Integra Type R 2001': 1,
'Acura RL Sedan 2012': 2,
'Acura TL Sedan 2012': 3,
'Acura TL Type-S 2008': 4,
'Acura TSX Sedan 2012': 5,
'Acura ZDX Hatchback 2012': 6,
'Aston Martin V8 Vantage Convertible 2012': 7,
'Aston Martin V8 Vantage Coupe 2012': 8,
'Aston Martin Virage Convertible 2012': 9,
'Aston Martin Virage Coupe 2012': 10,
'Audi 100 Sedan 1994': 11,
'Audi 100 Wagon 1994': 12,
'Audi A5 Coupe 2012': 13,
'Audi R8 Coupe 2012': 14,
'Audi RS 4 Convertible 2008': 15,
'Audi S4 Sedan 2007': 16,
'Audi S4 Sedan 2012': 17,
'Audi S5 Convertible 2012': 18,
'Audi S5 Coupe 2012': 19,
'Audi S6 Sedan 2011': 20,
'Audi TT Hatchback 2011': 21,
'Audi TT RS Coupe 2012': 22,
'Audi TTS Coupe 2012': 23,
'Audi V8 Sedan 1994': 24,
'BMW 1 Series Convertible 2012': 25,
'BMW 1 Series Coupe 2012': 26,
'BMW 3 Series Sedan 2012': 27,
'BMW 3 Series Wagon 2012': 28,
'BMW 6 Series Convertible 2007': 29,
'BMW ActiveHybrid 5 Sedan 2012': 30,
'BMW M3 Coupe 2012': 31,
'BMW M5 Sedan 2010': 32,
'BMW M6 Convertible 2010': 33,
'BMW X3 SUV 2012': 34,
'BMW X5 SUV 2007': 35,
'BMW X6 SUV 2012': 36,
'BMW Z4 Convertible 2012': 37,
'Bentley Arnage Sedan 2009': 38,
'Bentley Continental Flying Spur Sedan 2007': 39,
'Bentley Continental GT Coupe 2007': 40,
'Bentley Continental GT Coupe 2012': 41,
'Bentley Continental Supersports Conv. Convertible 2012': 42,
'Bentley Mulsanne Sedan 2011': 43,
'Bugatti Veyron 16.4 Convertible 2009': 44,
'Bugatti Veyron 16.4 Coupe 2009': 45,
'Buick Enclave SUV 2012': 46,
'Buick Rainier SUV 2007': 47,
'Buick Regal GS 2012': 48,
'Buick Verano Sedan 2012': 49,
'Cadillac CTS-V Sedan 2012': 50,
'Cadillac Escalade EXT Crew Cab 2007': 51,
'Cadillac SRX SUV 2012': 52,
'Chevrolet Avalanche Crew Cab 2012': 53,
'Chevrolet Camaro Convertible 2012': 54,
'Chevrolet Cobalt SS 2010': 55,
'Chevrolet Corvette Convertible 2012': 56,
'Chevrolet Corvette Ron Fellows Edition Z06 2007': 57,
'Chevrolet Corvette ZR1 2012': 58,
'Chevrolet Express Cargo Van 2007': 59,
'Chevrolet Express Van 2007': 60,
'Chevrolet HHR SS 2010': 61,
'Chevrolet Impala Sedan 2007': 62,
'Chevrolet Malibu Hybrid Sedan 2010': 63,
'Chevrolet Malibu Sedan 2007': 64,
'Chevrolet Monte Carlo Coupe 2007': 65,
'Chevrolet Silverado 1500 Classic Extended Cab 2007': 66,
'Chevrolet Silverado 1500 Extended Cab 2012': 67,
'Chevrolet Silverado 1500 Hybrid Crew Cab 2012': 68,
'Chevrolet Silverado 1500 Regular Cab 2012': 69,
'Chevrolet Silverado 2500HD Regular Cab 2012': 70,
'Chevrolet Sonic Sedan 2012': 71,
'Chevrolet Tahoe Hybrid SUV 2012': 72,
'Chevrolet TrailBlazer SS 2009': 73,
'Chevrolet Traverse SUV 2012': 74,
'Chrysler 300 SRT-8 2010': 75,
'Chrysler Aspen SUV 2009': 76,
'Chrysler Crossfire Convertible 2008': 77,
'Chrysler PT Cruiser Convertible 2008': 78,
'Chrysler Sebring Convertible 2010': 79,
'Chrysler Town and Country Minivan 2012': 80,
'Daewoo Nubira Wagon 2002': 81,
'Dodge Caliber Wagon 2007': 82,
'Dodge Caliber Wagon 2012': 83,
'Dodge Caravan Minivan 1997': 84,
'Dodge Challenger SRT8 2011': 85,
'Dodge Charger SRT-8 2009': 86,
'Dodge Charger Sedan 2012': 87,
'Dodge Dakota Club Cab 2007': 88,
'Dodge Dakota Crew Cab 2010': 89,
'Dodge Durango SUV 2007': 90,
'Dodge Durango SUV 2012': 91,
'Dodge Journey SUV 2012': 92,
'Dodge Magnum Wagon 2008': 93,
'Dodge Ram Pickup 3500 Crew Cab 2010': 94,
'Dodge Ram Pickup 3500 Quad Cab 2009': 95,
'Dodge Sprinter Cargo Van 2009': 96,
'Eagle Talon Hatchback 1998': 97,
'FIAT 500 Abarth 2012': 98,
'FIAT 500 Convertible 2012': 99,
'Ferrari 458 Italia Convertible 2012': 100,
'Ferrari 458 Italia Coupe 2012': 101,
'Ferrari California Convertible 2012': 102,
'Ferrari FF Coupe 2012': 103,
'Fisker Karma Sedan 2012': 104,
'Ford E-Series Wagon Van 2012': 105,
'Ford Edge SUV 2012': 106,
'Ford Expedition EL SUV 2009': 107,
'Ford F-150 Regular Cab 2007': 108,
'Ford F-150 Regular Cab 2012': 109,
'Ford F-450 Super Duty Crew Cab 2012': 110,
'Ford Fiesta Sedan 2012': 111,
'Ford Focus Sedan 2007': 112,
'Ford Freestar Minivan 2007': 113,
'Ford GT Coupe 2006': 114,
'Ford Mustang Convertible 2007': 115,
'Ford Ranger SuperCab 2011': 116,
'GMC Acadia SUV 2012': 117,
'GMC Canyon Extended Cab 2012': 118,
'GMC Savana Van 2012': 119,
'GMC Terrain SUV 2012': 120,
'GMC Yukon Hybrid SUV 2012': 121,
'Geo Metro Convertible 1993': 122,
'HUMMER H2 SUT Crew Cab 2009': 123,
'HUMMER H3T Crew Cab 2010': 124,
'Honda Accord Coupe 2012': 125,
'Honda Accord Sedan 2012': 126,
'Honda Odyssey Minivan 2007': 127,
'Honda Odyssey Minivan 2012': 128,
'Hyundai Accent Sedan 2012': 129,
'Hyundai Azera Sedan 2012': 130,
'Hyundai Elantra Sedan 2007': 131,
'Hyundai Elantra Touring Hatchback 2012': 132,
'Hyundai Genesis Sedan 2012': 133,
'Hyundai Santa Fe SUV 2012': 134,
'Hyundai Sonata Hybrid Sedan 2012': 135,
'Hyundai Sonata Sedan 2012': 136,
'Hyundai Tucson SUV 2012': 137,
'Hyundai Veloster Hatchback 2012': 138,
'Hyundai Veracruz SUV 2012': 139,
'Infiniti G Coupe IPL 2012': 140,
'Infiniti QX56 SUV 2011': 141,
'Isuzu Ascender SUV 2008': 142,
'Jaguar XK XKR 2012': 143,
'Jeep Compass SUV 2012': 144,
'Jeep Grand Cherokee SUV 2012': 145,
'Jeep Liberty SUV 2012': 146,
'Jeep Patriot SUV 2012': 147,
'Jeep Wrangler SUV 2012': 148,
'Lamborghini Aventador Coupe 2012': 149,
'Lamborghini Diablo Coupe 2001': 150,
'Lamborghini Gallardo LP 570-4 Superleggera 2012': 151,
'Lamborghini Reventon Coupe 2008': 152,
'Land Rover LR2 SUV 2012': 153,
'Land Rover Range Rover SUV 2012': 154,
'Lincoln Town Car Sedan 2011': 155,
'MINI Cooper Roadster Convertible 2012': 156,
'Maybach Landaulet Convertible 2012': 157,
'Mazda Tribute SUV 2011': 158,
'McLaren MP4-12C Coupe 2012': 159,
'Mercedes-Benz 300-Class Convertible 1993': 160,
'Mercedes-Benz C-Class Sedan 2012': 161,
'Mercedes-Benz E-Class Sedan 2012': 162,
'Mercedes-Benz S-Class Sedan 2012': 163,
'Mercedes-Benz SL-Class Coupe 2009': 164,
'Mercedes-Benz Sprinter Van 2012': 165,
'Mitsubishi Lancer Sedan 2012': 166,
'Nissan 240SX Coupe 1998': 167,
'Nissan Juke Hatchback 2012': 168,
'Nissan Leaf Hatchback 2012': 169,
'Nissan NV Passenger Van 2012': 170,
'Plymouth Neon Coupe 1999': 171,
'Porsche Panamera Sedan 2012': 172,
'Ram C/V Cargo Van Minivan 2012': 173,
'Rolls-Royce Ghost Sedan 2012': 174,
'Rolls-Royce Phantom Drophead Coupe Convertible 2012': 175,
'Rolls-Royce Phantom Sedan 2012': 176,
'Scion xD Hatchback 2012': 177,
'Spyker C8 Convertible 2009': 178,
'Spyker C8 Coupe 2009': 179,
'Suzuki Aerio Sedan 2007': 180,
'Suzuki Kizashi Sedan 2012': 181,
'Suzuki SX4 Hatchback 2012': 182,
'Suzuki SX4 Sedan 2012': 183,
'Tesla Model S Sedan 2012': 184,
'Toyota 4Runner SUV 2012': 185,
'Toyota Camry Sedan 2012': 186,
'Toyota Corolla Sedan 2012': 187,
'Toyota Sequoia SUV 2012': 188,
'Volkswagen Beetle Hatchback 2012': 189,
'Volkswagen Golf Hatchback 1991': 190,
'Volkswagen Golf Hatchback 2012': 191,
'Volvo 240 Sedan 1993': 192,
'Volvo C30 Hatchback 2012': 193,
'Volvo XC90 SUV 2007': 194,
'smart fortwo Convertible 2012': 195}
model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same',
input_shape=(224,224,3)))
model.add(Activation('relu'))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(196, activation='softmax'))
model.compile(optimizers.RMSprop(learning_rate=0.0001, decay=1e-6),loss="categorical_crossentropy",metrics=["accuracy"])
STEP_SIZE_TRAIN=train_generator.n//train_generator.batch_size
STEP_SIZE_VALID=valid_generator.n//valid_generator.batch_size
STEP_SIZE_TEST=test_generator.n//test_generator.batch_size
model.fit_generator(generator=train_generator,
steps_per_epoch=STEP_SIZE_TRAIN,
validation_data=valid_generator,
validation_steps=STEP_SIZE_VALID,
epochs=20)
Epoch 1/20
--------------------------------------------------------------------------- ResourceExhaustedError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_20240/3875776026.py in <module> 2 STEP_SIZE_VALID=valid_generator.n//valid_generator.batch_size 3 STEP_SIZE_TEST=test_generator.n//test_generator.batch_size ----> 4 model.fit_generator(generator=train_generator, 5 steps_per_epoch=STEP_SIZE_TRAIN, 6 validation_data=valid_generator, ~\anaconda3\envs\tflow\lib\site-packages\keras\engine\training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch) 2014 'Please use `Model.fit`, which supports generators.', 2015 stacklevel=2) -> 2016 return self.fit( 2017 generator, 2018 steps_per_epoch=steps_per_epoch, ~\anaconda3\envs\tflow\lib\site-packages\keras\utils\traceback_utils.py in error_handler(*args, **kwargs) 65 except Exception as e: # pylint: disable=broad-except 66 filtered_tb = _process_traceback_frames(e.__traceback__) ---> 67 raise e.with_traceback(filtered_tb) from None 68 finally: 69 del filtered_tb ~\anaconda3\envs\tflow\lib\site-packages\tensorflow\python\eager\execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name) 56 try: 57 ctx.ensure_initialized() ---> 58 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name, 59 inputs, attrs, num_outputs) 60 except core._NotOkStatusException as e: ResourceExhaustedError: failed to allocate memory [[node RMSprop/RMSprop/update_8/mul_2 (defined at C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\optimizer_v2\rmsprop.py:211) ]] Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info. This isn't available when running in Eager mode. [Op:__inference_train_function_1300] Errors may have originated from an input operation. Input Source operations connected to node RMSprop/RMSprop/update_8/mul_2: In[0] RMSprop/Identity (defined at C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\optimizer_v2\optimizer_v2.py:955) In[1] RMSprop/IdentityN (defined at C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\optimizer_v2\utils.py:35) Operation defined at: (most recent call last) >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\runpy.py", line 197, in _run_module_as_main >>> return _run_code(code, main_globals, None, >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\runpy.py", line 87, in _run_code >>> exec(code, run_globals) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\ipykernel_launcher.py", line 16, in <module> >>> app.launch_new_instance() >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\traitlets\config\application.py", line 845, in launch_instance >>> app.start() >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\ipykernel\kernelapp.py", line 677, in start >>> self.io_loop.start() >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\tornado\platform\asyncio.py", line 199, in start >>> self.asyncio_loop.run_forever() >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\asyncio\base_events.py", line 596, in run_forever >>> self._run_once() >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\asyncio\base_events.py", line 1890, in _run_once >>> handle._run() >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\asyncio\events.py", line 80, in _run >>> self._context.run(self._callback, *self._args) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\ipykernel\kernelbase.py", line 457, in dispatch_queue >>> await self.process_one() >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\ipykernel\kernelbase.py", line 446, in process_one >>> await dispatch(*args) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\ipykernel\kernelbase.py", line 353, in dispatch_shell >>> await result >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\ipykernel\kernelbase.py", line 648, in execute_request >>> reply_content = await reply_content >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\ipykernel\ipkernel.py", line 353, in do_execute >>> res = shell.run_cell(code, store_history=store_history, silent=silent) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\ipykernel\zmqshell.py", line 533, in run_cell >>> return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\IPython\core\interactiveshell.py", line 2901, in run_cell >>> result = self._run_cell( >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\IPython\core\interactiveshell.py", line 2947, in _run_cell >>> return runner(coro) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\IPython\core\async_helpers.py", line 68, in _pseudo_sync_runner >>> coro.send(None) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\IPython\core\interactiveshell.py", line 3172, in run_cell_async >>> has_raised = await self.run_ast_nodes(code_ast.body, cell_name, >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\IPython\core\interactiveshell.py", line 3364, in run_ast_nodes >>> if (await self.run_code(code, result, async_=asy)): >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\IPython\core\interactiveshell.py", line 3444, in run_code >>> exec(code_obj, self.user_global_ns, self.user_ns) >>> >>> File "C:\Users\uprak\AppData\Local\Temp/ipykernel_20240/3875776026.py", line 4, in <module> >>> model.fit_generator(generator=train_generator, >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\engine\training.py", line 2016, in fit_generator >>> return self.fit( >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\utils\traceback_utils.py", line 64, in error_handler >>> return fn(*args, **kwargs) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\engine\training.py", line 1216, in fit >>> tmp_logs = self.train_function(iterator) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\engine\training.py", line 878, in train_function >>> return step_function(self, iterator) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\engine\training.py", line 867, in step_function >>> outputs = model.distribute_strategy.run(run_step, args=(data,)) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\engine\training.py", line 860, in run_step >>> outputs = model.train_step(data) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\engine\training.py", line 816, in train_step >>> self.optimizer.minimize(loss, self.trainable_variables, tape=tape) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\optimizer_v2\optimizer_v2.py", line 532, in minimize >>> return self.apply_gradients(grads_and_vars, name=name) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\optimizer_v2\optimizer_v2.py", line 672, in apply_gradients >>> return self._distributed_apply(strategy, grads_and_vars, name, >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\optimizer_v2\optimizer_v2.py", line 721, in _distributed_apply >>> update_op = distribution.extended.update( >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\optimizer_v2\optimizer_v2.py", line 704, in apply_grad_to_update_var >>> update_op = self._resource_apply_dense(grad, var, **apply_kwargs) >>> >>> File "C:\Users\uprak\anaconda3\envs\tflow\lib\site-packages\keras\optimizer_v2\rmsprop.py", line 211, in _resource_apply_dense >>> var_t = var - coefficients["lr_t"] * grad / ( >>>